我刚开始使用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
请注意错误的顺序。
我错过了一些明显的东西吗?
由于
答案 0 :(得分: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);