Winston日志级别/隐藏日志级别

3
据我所了解,Winston在其日志级别中有一个层次结构。您可以使用winston.level = 'error'设置级别,并且所有低于该级别的级别都不应显示。不幸的是,我的控制台仍然显示info和debug的日志。

问题1:

如何真正设置winston只显示日志级别

问题2:

为什么调试仍然在控制台中显示,我已经将其配置为在日志文件中显示(此外还会这样做)

winston = require('winston')
winston.emitErrs = true
logger = new winston.Logger({
  transports: [
    new winston.transports.File({
      level: 'info'
      filename: 'logs/log.log'
      handleExceptions: true
      json: true
      maxsize: 5242880 #5MB
      maxFiles: 5
      colorize: false
      timestamp: true
    }),
    new winston.transports.Console({
      level: 'debug'
      handleExceptions: true
      json: false
      colorize: true
    })
  ],
  exitOnError: false
})
winston.level = 'error'

module.exports = logger
module.exports.stream = {
  write: (message, encoding) ->
    logger.info(message)
}

这段代码基本上来自于这个教程: http://tostring.it/2014/06/23/advanced-logging-with-nodejs/
1个回答

3

现在我理解这个概念了。它将所有记录级别(包括定义的传输)之前的内容记录下来。所以我猜如果不改变顺序,就不能只将 debug 流到控制台并将 info 记录到日志中。

这不能在控制台记录 debug 信息:

new winston.transports.Console({
  level: 'info'
  handleExceptions: true
  json: false
  colorize: true
})

我的第一个假设是我可以为每个日志级别指定一个传输方式,然后决定我想要多少日志记录:

winston.setLevels(winston.config.syslog.levels)

例如: 错误信息写入到mongoDb, 信息写入到log.log文件, 调试信息输出到控制台


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接