2

我只想将数据而不是日志级别、时间戳等记录到文件中。

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

logger.log('info', "a")

它从行中删除时间戳,但仍然出现日志级别。目前,文件包含“信息:a”。我希望它只记录“a”。是否可以在winston中指定输出格式?

4

2 回答 2

2

不幸的是,这种格式有点硬编码到winston中。您可以在 的log函数中看到它的逻辑common.js,大多数默认传输都使用该函数。

解决这个问题的方法是编写您自己的不依赖于common.log().

顺便说一句:您可以只提供一个timestamp: false选项来禁用默认传输中的时间戳日志记录。

于 2014-06-04T20:35:38.553 回答
0

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

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.');
于 2017-02-21T10:22:11.717 回答