微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Winston-显示错误堆栈跟踪对象和正常格式的消息

如何解决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 举报,一经查实,本站将立刻删除。