首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在温斯顿日志消息中使用级别值而不是名称?

是否可以在温斯顿日志消息中使用级别值而不是名称?
EN

Stack Overflow用户
提问于 2016-02-03 17:42:46
回答 1查看 823关注 0票数 2

我正试图使一个用winston.js以json格式编写日志的应用程序与hekad一起工作。在我将winston.default.transports.console.json设置为true之后,像w.info('test', {val: 123})这样的调用会产生:

{"val":123,"level":"info","message":"test"}

问题是,根据heka文档,严重性必须是数字的,例如(对于syslog级别)6而不是info、5而不是notice等等。是否可以指示温斯顿将级别值而不是名称写入日志?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-05 23:31:41

最简单的方法是更改日志格式。这允许您创建几乎相同的输出,但例如,您可以将您的级别名称映射到数字。

你必须在运输中禁用json。在下面的示例中,我禁用了它,但我手动将其格式化为json。

示例:

代码语言:javascript
复制
this.logger.add(winston.transports.File, {
  name:'log.info',
  level: 'info',
  filename: path.join(logPath, 'info.log'),
  json: false, // this is important
  maxsize: 5242880,
  maxFiles: 5,
  colorize: false,
  formatter: function(options) { //formatter function
    var map = { //add rest of levels with values
      info: 6,
      notice: 5
    }
    //to check all options
    console.log(options); //then you know what props you can use to create desired output
    //because we turn off json we have to manually create it
    return JSON.stringify({ 
      level: map[options.level],//I map level
      message: options.message
    });
  }
});

这将在日志文件中返回:

{“级别”:6,“消息”:“某些消息”}

您可以在温斯顿文档(在“自定义日志格式”部分的页面底部)中阅读更多有关它的信息。链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35184017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档