nodejs记录到多个文件

时间:2018-02-09 22:29:59

标签: node.js

阅读How to log - the 12 factor application way它声明使用此命令:

node app.js 2> app.err 1> app.out

我理解>运算符将命令输出发送到文件。

所以我也可以使用node app.js output.log

对于命令node app.js 2> app.err 1> app.out,确定app.err或app.out是否已登录的机制是什么。是应用程序内的日志记录级别吗?将记录数据发送到app.err& app.out?

1 个答案:

答案 0 :(得分:1)

预期的行为是,发送到stderr的输出会重定向到app.err,而发送到stdout的输出会转到app.out。例如这个脚本:

var winston = require('winston');
var transports = [
    new winston.transports.Console({
        level: 'debug',
        handleExceptions: true,
        json: false,
        timestamp: () => (new Date()).toLocaleString(),
        colorize: false
    })
];

var logger = new winston.Logger({
    transports: transports,
    exitOnError: false
});

logger.error('goes to stderr');
logger.info('goes to stdout');

会将goes to stderr写入app.err,而goes to stdout会显示在app.out中。但是,可以使用stderrLevels属性覆盖此默认行为,使用该属性可以指定哪些调试级别转到stderr

或者,使用console,行为会被记录here - 默认情况下,console.error会转到stderr(即您的设置中为app.errconsole.log会输出到stdoutapp.out)。