Javascript Winston-显示错误堆栈跟踪对象和正常格式消息
我有下面的日志文件-Javascript Winston-显示错误堆栈跟踪对象和正常格式消息,javascript,node.js,express,logging,winston,Javascript,Node.js,Express,Logging,Winston,我有下面的日志文件- const { createLogger, format, transports } = require('winston'); const { combine, prettyPrint, timestamp, printf, simple } = format; // set default log level. const logLevel = 'info'; const errorStackFormat = format((info) => { if (
const { createLogger, format, transports } = require('winston');
const { combine, prettyPrint, timestamp, printf, simple } = format;
// set default log level.
const logLevel = 'info';
const errorStackFormat = format((info) => {
if (info instanceof Error) {
return Object.assign({}, info, {
stack: info.stack,
message: info.message
});
}
return info;
});
var logger = createLogger({
level: logLevel,
levels: {
error: 0,
warn: 1,
info: 2,
http: 3,
verbose: 4,
debug: 5,
silly: 6
},
format: combine(
prettyPrint(),
timestamp({
format: 'DD-MM-YYYY hh:mm:ss A'
}),
errorStackFormat(),
simple(),
printf((info) => {
return `${info.timestamp} - ${info.level}: ${info.message}`;
})
),
transports: [new transports.Console()]
});
module.exports = logger;
如果我像这样传递一个普通消息-logger.info('normalmessage')
,我得到的输出是14-10-2020 12:58:01 AM-info:normal message
,但是如果我尝试传递一个错误对象,比如-logger.info(new error('error'),我得到的输出是14-10-2020 01:02:23 AM-info:error
。如果我在errorStackFormat
方法中放置控制台日志,我将在该方法中获得适当的stack跟踪对象,那么为什么它没有得到控制台?
如果我将simple()
调用移动到printf
下面,那么就可以正确地获得堆栈跟踪。在无错误的情况下,我应该做什么更改才能通过printf
获取正常格式的消息,在出错的情况下,我应该堆栈跟踪消息