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 (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('normal message'),则输出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 trace object,那么为什么它没有得到控制台? 如果将simple()调用移到printf下方,则可以正确获取堆栈跟踪。在无错误的情况下如何通过printf获取正常格式的消息,在发生错误的情况下应该进行堆栈跟踪消息呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)