我找不到存储nodejs日志文件的地方。 因为在我的节点服务器中我有“分段错误”,我想查看日志文件以获取更多信息......
答案 0 :(得分:99)
没有日志文件。每个node.js“app”都是一个单独的实体。默认情况下,它会将错误记录到STDERR并输出到STDOUT。您可以在从shell运行它时更改它,而不是记录到文件。
node my_app.js > my_app_log.log 2> my_app_err.log
或者(推荐),您可以手动或使用众多日志库之一在应用程序中添加日志记录:
答案 1 :(得分:20)
forever可能对您有用。它将使用日志选项运行您的.js-File 24/7。以下是帮助文本中的两个片段:
[长时间运行] 永远进程将继续运行将日志消息输出到控制台。 恩。永远-o out.log -e err.log my-script.js
和
[守护进程] 永久进程将作为守护进程运行,这将使目标进程启动 在后台。这对远程启动简单node.js脚本非常有用 不使用nohup。建议使用-o -l和&运行start。 -e。 恩。永远开始-l forever.log -o out.log -e err.log my-daemon.js 永远停止my-daemon.js
答案 2 :(得分:1)
如果您在dev中使用docker,则可以在另一个shell中执行此操作: docker attach running_node_app_container_name
这将显示STDOUT和STDERR。
答案 3 :(得分:1)
对于nodejs日志文件,您可以使用winston和morgan来代替console.log()语句用户winston.log()或其他winston方法进行记录。 要使用Winston和Morgan,您需要使用npm安装它们。例: npm i -S温斯顿 npm i -S Morgan
然后在项目中创建一个名为winston的文件夹,然后在该文件夹中创建config.js并复制下面给出的代码。
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;
复制上面的代码后,创建一个名称日志,该日志与Winston或任何您想要的地方平行,并在该日志文件夹中创建文件app.log。返回config.js并在第5行“文件名:${appRoot}/logs/app.log
”中设置路径,
”添加到您创建的相应app.log。
此后转到您的index.js,并在其中包含以下代码。
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');