0

我刚刚开始使用 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');

我在控制台中获得的唯一日志是:

info: log2
trace: log4
debug: log3

还要注意错误的顺序。

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

谢谢

4

1 回答 1

2

你必须考虑两件事:

  1. 控制台传输始终使用默认级别“信息”创建,除非您指定不同的级别
  2. 当您为传输指定级别时,记录器将打印所有级别 >= 高于指定级别的消息

还要考虑到 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);
于 2014-10-08T08:33:02.500 回答