我想只记录数据,而不是记录文件的日志级别,时间戳等。
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中指定输出格式?
答案 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.');