NodeJs WinstonJS非常奇怪的开始

时间:2014-08-24 20:53:06

标签: node.js winston

我刚开始使用winstonJS进行NodeJS应用程序日志记录。

我的代码是这样的:

var winston = require('winston');

var logger = new winston.Logger({
    levels: { error: 0, warn: 1, info: 2, debug: 3, trace: 4 },
    transports: [
        new (winston.transports.Console)()
    ]
});

logger.log('error', 'log0');
logger.log('warn', 'log1');
logger.log('info', 'log2');
logger.log('debug', 'log3');
logger.log('trace', 'log4');

以及我在控制台中获得的 ONLY 日志是:

info: log2
trace: log4
debug: log3

请注意错误的顺序。

我错过了一些明显的东西吗?

由于

1 个答案:

答案 0 :(得分:2)

你必须考虑两件事:

  1. 除非您指定其他级别
  2. ,否则始终使用默认级别“info”创建控制台传输
  3. 当您为传输指定级别时,记录器将打印级别> =超过指定级别的所有邮件
  4. 还要考虑winston的默认日志记录级别为:silly=0, debug=1, verbose=2, info=3, warn=4, error=5

    分析你的代码我可以看到你定义了一个新的“信息”级别,值为2:这意味着控制台日志将只打印级别> = 2的消息,在你的例子中这些级别正是信息,调试和跟踪(我想你以错误的顺序定义你的级别)。 如果您更改这样的代码,您将看到所有打印的消息:

    transports: [
        new (winston.transports.Console)({level: 'error'})
    ]
    

    关于错误的输出顺序我无法重现它,我的输出总是

    info: log2
    debug: log3
    trace: log4
    

    PS:如果您使用任何不同的替换error: 0, warn: 1, infoz: 2, debug: 3, trace: 4来定义此info之类的级别,则记录器将根本不打印任何内容,因为默认控制台传输级别将保持info。您可以通过简单的

    发现您的交通水平
    console.log(logger.transports.console.level);