我在我的应用中设置了一个简单的winston记录器,如下所示:
function logger(success, msg) {
let now = new Date().toUTCString()
let logger = new (winston.Logger)({
transports: [
new (winston.transports.File)({
filename: 'log.log',
timestamp: function() {
return new Date().toUTCString();
},
formatter: function(options) {
return `>>>>>>>>>> ${options.timestamp()} - ${options.level.toUpperCase} - ${options.message}`;
}
})
]
});
if (success) {
logger.log('info', msg)
} else {
logger.log('error', msg)
}
}
但它不是记录格式化的字符串,而是输出以下内容:
{"level":"error","message":"Nothing to upload","timestamp":"Mon, 23 Apr 2018 13:53:01 GMT"}
想法?我错过了什么吗? (当然是我)
答案 0 :(得分:1)
正如您在File的winston文档中可以看到的那样,如果您不希望文件中的信息是JSON对象,则可以将属性json
设置为false。 默认此属性为true
。
json:如果为true,则消息将记录为JSON(默认为true)。
您可以尝试更改代码:
function logger(success, msg) {
let now = new Date().toUTCString()
let logger = new (winston.Logger)({
transports: [
new (winston.transports.File)({
filename: 'log.log',
timestamp: function() {
return new Date().toUTCString();
},
json: false,
formatter: function(options) {
return `>>>>>>>>>> ${options.timestamp()} - ${options.level.toUpperCase} - ${options.message}`;
}
})
]
});
if (success) {
logger.log('info', msg)
} else {
logger.log('error', msg)
}
}