在Winston的纯文件日志logging

我只想logging数据,而不是日志级别,时间戳记等文件。

var logger = new (winston.Logger)({ transports: [ new (winston.transports.File)({ filename: '/tmp/data.log', json : false, timestamp : function() { return ''; } }) ] }); logger.log('info', "a") 

它从行中删除时间戳,但日志级别仍然出现。 目前,文件包含“info:a”。 我希望它只logging“一个”。 有没有可能在winston中指定输出格式?

不幸的是,这种格式是硬编码到温斯顿。 你可以在common.jslog函数中看到它的逻辑,这是大多数默认传输所使用的。

解决这个问题的方法是编写自己的不依赖于common.log()的自定义传输。

另外:您可以只提供一个timestamp: false选项来禁用默认传输中的时间戳logging。

您可以像这样定义自定义日志格式

 var logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({ timestamp: function() { return Date.now(); }, formatter: function(options) { // Return string will be passed to logger. return options.timestamp() +' '+ options.level.toUpperCase() +' '+ (options.message ? options.message : '') + (options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '' ); } }) ] }); logger.info('Data to log.');