node.js winston logger nohup没有颜色

时间:2015-06-22 07:42:02

标签: node.js logging nohup winston

我们在项目中使用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有问题吗?

1 个答案:

答案 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

但是,即使没有终端,所有这些变通办法也很可能使控制台记录器使用颜色。