我们在项目中使用winston logger,并使用以下传输设置:
file: {
filename: __base + '/log/server.log',
colorize : true,
timestamp : true,
json : false,
prettyPrint : true
}
如果使用nohup启动应用程序,则日志文件不会着色。它只能在没有nohup的情况下工作。
nohup supervisor -w . -i node_modules/ server.js &
winston或nohup有问题吗?
答案 0 :(得分:1)
由colors包(由winston
使用)导致在尝试确定是否支持颜色时执行following check的原因:
if (process.stdout && !process.stdout.isTTY) {
return false;
}
这意味着当您的应用程序在后台运行时,它没有终端并且不使用颜色。这也会影响nohup
以外的命令/应用(请参阅issue #121)。
一个简单的解决方法是使用--color=true
参数启动您的应用程序(或在调用process.argv.push('--color=true')
之前使用require('winston')
模拟它。
或者,您可以修补winston
- 只需在lib/winston/config.js添加一行:
var colors = require('colors/safe');
colors.enabled = true; // add this line
但是,即使没有终端,所有这些变通办法也很可能使控制台记录器使用颜色。