温斯顿:了解日志记录级别

Yan*_*hon 18 logging node.js winston

阅读和摆弄Winston,我很困惑为什么日志级别按照它们的顺序进行排序以及为什么传输的行为方式与它们一样(好吧,至少是控制台之一).我很感激,如果有人能够,或许甚至彻底地使用真实用例,解释为什么使用Winston进行日志记录的方式呢?

例如,我像这样设置我的记录器:

var logger = new (winston.Logger)({
  levels: winston.config.syslog.levels,
  colors: winston.config.syslog.colors,
  level: "debug",  // I'm not sure what this option even does here???
  transports: [
    new (winston.transports.Console)({
      colorize: true,
      handleExceptions: true,
      json: false,
      level: "debug"
    })
  ]
});
Run Code Online (Sandbox Code Playgroud)

所以,如果我这样做logger.debug("Test");,那么它会记录debug: Test,很好.但如果我这样做logger.info("Test");,那么什么都没发生.

遇到 的问题是,如果我想除了 debug消息之前需要登录控制台,我该怎么办?...甚至debug info消息,但记录其他一切?

来自Java世界,使用标准记录器,我习惯于debug更加"细粒度" warn而且记录器向后工作; info例如,将日志记录级别设置为记录除debug(或其他)之外的所有内容.

另外,如果我想什么记录只记录error,warning以及info短信,我会怎么做,与温斯顿?

*编辑*

显然,这个级别的顺序是独一无二的winston.config.syslog.levels.因此,剩下的唯一问题是:"是否有可能以某种方式将传输限制到非常特定的日志记录级别?"

kum*_*rsh 8

根据文档,您可以设置自己的日志级别,0为最低级别,并将颜色与其关联.现在,如果您不想记录最低级别,只需将该level属性设置为相应级别即可.默认情况下,控制台记录器将其级别设置为info

所以,这是一个例子:

logger = new (winston.Logger)({
  levels: {
    'info': 0,
    'ok': 1,
    'error': 2
  }
  transports: [
    new (winston.transports.ConsoleTransport)(silent: options.silent, level: 'ok')
  ]
});
Run Code Online (Sandbox Code Playgroud)