在winston中记录普通文件

时间:2014-04-24 00:34:34

标签: node.js logging winston

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

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”。我希望它只记录“a”。是否可以在winston中指定输出格式?

2 个答案:

答案 0 :(得分:2)

不幸的是,格式化有点硬编码到winston;你可以在log的{​​{1}}函数中看到它的逻辑,这是大多数默认传输使用的。

解决这个问题的方法是编写自己的自定义传输,而不依赖common.js

暂且不说:您只需提供common.log()选项即可在默认传输中禁用时间戳记录。

答案 1 :(得分: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.');