问题描述
我是第一次设置Winston记录器
const { createLogger,format,transports } = require('winston');
const logLevels = { error: 0,warn: 1,info: 2,verbose: 3,debug: 4,silly: 5 };
const logger = createLogger({
level: logLevels[process.env.LOG_LEVEL] !== undefined ? process.env.LOG_LEVEL : 'info',format: format.combine(
format.colorize(),format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),format.simple(),format.printf(context => {
const msgstr = JSON.stringify(context.message,null,null)
console.log(context);
return `[${context.level}] [${context.timestamp}] ${msgstr}`;
}),),transports: [new transports.Console()]
});
export default logger
不确定这样做是否正确,但是当我记录错误时,我看不到上下文对象内的路径。
我在应用程序结尾处捕获了错误
app.use((err,req,res,next) => {
logger.error(err)
if (res.headeRSSent) {
return next(err)
}
res.status(500).send({ error: err })
});
任何帮助都会很棒,谢谢!
解决方法
您应该在对错误记录器的调用中添加堆栈跟踪:
{{1}}
我在下面的堆栈跟踪的前6行中添加了具体的错误类。当我使用%s语法时,您需要splat设置,因此也许使用类似以下记录器:
{{1}}