node.js winston logger no colors with nohup
node.js winston logger no colors with nohup
我们在项目中使用 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的问题?
是colors package (used by winston
) that performs the following check在判断是否支持颜色时造成的:
if (process.stdout && !process.stdout.isTTY) {
return false;
}
这意味着当您的应用程序在后台 运行 时,它没有终端并且不使用颜色。这也会影响除 nohup
之外的 commands/apps(参见 issue #121)。
一个简单的解决方法是使用 --color=true
参数启动您的应用程序(或者在调用 require('winston')
之前使用 process.argv.push('--color=true')
模拟它。
或者,您可以修补 winston
- 只需向 lib/winston/config.js 添加一行:
var colors = require('colors/safe');
colors.enabled = true; // add this line
但是,即使没有终端,所有这些解决方法很可能会使控制台记录器使用颜色。
我们在项目中使用 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的问题?
是colors package (used by winston
) that performs the following check在判断是否支持颜色时造成的:
if (process.stdout && !process.stdout.isTTY) {
return false;
}
这意味着当您的应用程序在后台 运行 时,它没有终端并且不使用颜色。这也会影响除 nohup
之外的 commands/apps(参见 issue #121)。
一个简单的解决方法是使用 --color=true
参数启动您的应用程序(或者在调用 require('winston')
之前使用 process.argv.push('--color=true')
模拟它。
或者,您可以修补 winston
- 只需向 lib/winston/config.js 添加一行:
var colors = require('colors/safe');
colors.enabled = true; // add this line
但是,即使没有终端,所有这些解决方法很可能会使控制台记录器使用颜色。