Tôi không thể tìm thấy nơi lưu trữ tệp nhật ký nodejs. Vì trong máy chủ nút của tôi, tôi có "Lỗi phân đoạn", tôi muốn xem tệp nhật ký để biết thêm thông tin ...
Tôi không thể tìm thấy nơi lưu trữ tệp nhật ký nodejs. Vì trong máy chủ nút của tôi, tôi có "Lỗi phân đoạn", tôi muốn xem tệp nhật ký để biết thêm thông tin ...
Câu trả lời:
Không có tệp nhật ký. Mỗi "ứng dụng" node.js là một thực thể riêng biệt. Theo mặc định, nó sẽ ghi lỗi vào STDERR và xuất ra STDOUT. Bạn có thể thay đổi điều đó khi bạn chạy nó từ trình bao của mình để đăng nhập vào một tệp thay thế.
node my_app.js > my_app_log.log 2> my_app_err.log
Ngoài ra (được khuyến nghị), bạn có thể thêm ghi nhật ký bên trong ứng dụng của mình theo cách thủ công hoặc bằng một trong nhiều thư viện nhật ký:
mãi mãi có thể được bạn quan tâm. Nó sẽ chạy tệp .js-File của bạn 24/7 với các tùy chọn ghi nhật ký. Đây là hai đoạn trích từ văn bản trợ giúp:
[Quá trình chạy dài] Quá trình mãi mãi sẽ tiếp tục chạy xuất thông báo nhật ký đến bảng điều khiển. Ví dụ. forever -o out.log -e err.log my-script.js
và
[Daemon] Tiến trình mãi mãi sẽ chạy dưới dạng một daemon sẽ làm cho tiến trình đích bắt đầu ở chế độ nền. Điều này cực kỳ hữu ích để khởi động từ xa các tập lệnh node.js đơn giản mà không sử dụng nohup. Bạn nên chạy bắt đầu bằng -o -l, & -e. Ví dụ. mãi mãi start -l forever.log -o out.log -e err.log my-daemon.js mãi mãi dừng my-daemon.js
Nếu bạn sử dụng docker trong nhà phát triển của mình, bạn có thể thực hiện việc này trong một shell khác: docker đính kèm running_node_app_container_name
Điều đó sẽ hiển thị cho bạn STDOUT và STDERR.
Đối với tệp nhật ký nodejs, bạn có thể sử dụng winton và morgan và thay cho câu lệnh console.log () của bạn, người dùng winton.log () hoặc các phương thức winton khác để ghi nhật ký. Để làm việc với winton và morgan, bạn cần cài đặt chúng bằng npm. Ví dụ: npm i -S wonton npm i -S morgan
Sau đó, tạo một thư mục trong dự án của bạn với tên wonton và sau đó tạo một config.js trong thư mục đó và sao chép mã này được đưa ra bên dưới.
const appRoot = require('app-root-path');
const winston = require('winston');
// define the custom settings for each transport (file, console)
const options = {
file: {
level: 'info',
filename: `${appRoot}/logs/app.log`,
handleExceptions: true,
json: true,
maxsize: 5242880, // 5MB
maxFiles: 5,
colorize: false,
},
console: {
level: 'debug',
handleExceptions: true,
json: false,
colorize: true,
},
};
// instantiate a new Winston Logger with the settings defined above
let logger;
if (process.env.logging === 'off') {
logger = winston.createLogger({
transports: [
new winston.transports.File(options.file),
],
exitOnError: false, // do not exit on handled exceptions
});
} else {
logger = winston.createLogger({
transports: [
new winston.transports.File(options.file),
new winston.transports.Console(options.console),
],
exitOnError: false, // do not exit on handled exceptions
});
}
// create a stream object with a 'write' function that will be used by `morgan`
logger.stream = {
write(message) {
logger.info(message);
},
};
module.exports = logger;
Sau khi sao chép đoạn mã trên, hãy tạo một thư mục có tên nhật ký song song với wonton hoặc bất cứ nơi nào bạn muốn và tạo một tệp app.log trong thư mục nhật ký đó. Quay lại config.js và đặt đường dẫn ở dòng thứ 5 "tên tệp ${appRoot}/logs/app.log:," đến app.log tương ứng do bạn tạo.
Sau đó, hãy truy cập index.js của bạn và bao gồm đoạn mã sau vào đó.
const morgan = require('morgan');
const winston = require('./winston/config');
const express = require('express');
const app = express();
app.use(morgan('combined', { stream: winston.stream }));
winston.info('You have successfully started working with winston and morgan');