gpt4 book ai didi

node.js - Nodejs 与 PM2 和 Winston 合并日志

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:33 25 4
gpt4 key购买 nike

我想将所有信息仅记录在一个文件中。我正在使用 pm2 "0.12.1"和 "winston": "0.8.3"。

这是我的 winston 代码

var winston = require('winston');

var customLoggerLevels = {
levels: {
trace: 0,
debug: 1,
info: 2,
warn: 3,
error: 4
},
colors: {
trace: 'blue',
debug: 'green',
info: 'grey',
warn: 'yellow',
error: 'red'
}
};

var logger = new (winston.Logger)({
levels: customLoggerLevels.levels
});

以及我的 Ecosystem.json 的一部分

 "apps" : [
{
"name" : "myapp",
"script" : "server.js",
"instances" : "1",
"err_file" : "myapp.log",
"out_file" : "myapp.log",
"env": {
"NODE_ENV": "development",
"PORT": 4000
},
"env_production" : {
"NODE_ENV": "production",
"PORT": 4000
}
}
]

这对我不起作用。我不明白为什么 pm2 仍然创建两个文件,一个用于输出,一个用于错误。我还想知道是否可以将文件放在生产中的另一个目录中。

谢谢

最佳答案

您可以在 out_fileerror_file 键中指定文件路径。默认情况下,pm2 将 stdout 输出重定向到与 stderr 输出不同的文件。如果您只想拥有一个日志文件,只需对两个输出使用相同的路径即可。

您的ecosystem.json将如下所示:

"apps" : [
{
"name" : "myapp",
"script" : "server.js",
"instances" : "1",
"error_file" : "/var/log/myapp.log",
"out_file" : "/var/log/myapp.log",
"env": {
"NODE_ENV": "development",
"PORT": 4000
},
"env_production" : {
"NODE_ENV": "production",
"PORT": 4000
}
}
]

还有一个选项可以合并每个实例的日志(不是合并/错误)。要使用它,请指定 merge_logs: true。它还允许您get rid of the pm2 id在日志文件名中。

关于node.js - Nodejs 与 PM2 和 Winston 合并日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27046888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com