是否有可能在winston日志消息中使用级别值而不是名称?

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

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

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

最简单的方法是更改​​日志格式。 这使您可以创build几乎相同的输出,但是例如,您可以将您的关卡名称映射到数字。

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

例:

 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 }); } }); 

这将在日志文件中返回:

{“level”:6,“message”:“某条消息”}

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

Interesting Posts