25

阅读和摆弄 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"
    })
  ]
});

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

我遇到 的问题是,如果我想将除消息之外的所有内容都登录到控制台 debug我该怎么办?...甚至debug info消息,但记录其他所有内容?

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

另外,如果我希望记录器只记录和消息error,我将如何使用 Winston 来做到这一点?warninginfo

* 编辑 *

显然,这种等级顺序是winston.config.syslog.levels. 所以剩下的唯一问题是:“是否有可能以某种方式将传输限制为仅非常特定的日志记录级别?”

4

2 回答 2

10

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

所以,这里有一个例子:

logger = new (winston.Logger)({
  levels: {
    'info': 0,
    'ok': 1,
    'error': 2
  }
  transports: [
    new (winston.transports.ConsoleTransport)(silent: options.silent, level: 'ok')
  ]
});
于 2014-01-05T07:27:11.583 回答
1
var logger = new (winston.Logger)({
       levels: {
        'info': 0,
        'ok': 1,
        'error': 2
       },
    colors: {
        'info': 'red',
        'ok': 'green',
        'error': 'yellow'
       },
    transports: [
        new (winston.transports.Console)({level:'info',colorize: true})
    ]
});
logger.log('info',"This is info level");
logger.info("This is info level");
于 2016-02-23T09:24:34.247 回答