我想只在一个文件中记录所有信息。我使用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
});
和我的一个生态系统.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仍会创建一个用于输出的文件和一个用于错误的文件。另外我想知道是否可以将文件放在生产中的另一个目录中。
谢谢
答案 0 :(得分:4)
您可以在out_file
和error_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。