We are using winston logger in our project with the following transport settings:
file: {
filename: __base + '/log/server.log',
colorize : true,
timestamp : true,
json : false,
prettyPrint : true
}
If the application is started with nohup, log file is not colorized. It works only without nohup.
nohup supervisor -w . -i node_modules/ server.js &
Is it problem with winston or nohup?
It's caused by colors package (used by
winston
) that performs the following check when trying to determine whether to support colors:This means that when your application is running in a background, it doesn't have a terminal and colors are not used. This affects commands/apps other than
nohup
as well (see issue #121).A simple workaround is to start your application with
--color=true
argument (or to simulate it withprocess.argv.push('--color=true')
beforerequire('winston')
is called.Alternatively, you can patch
winston
- just add one line to lib/winston/config.js:However, all of these workarounds will most likely make the console logger to use colors even when there is no terminal.