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
获取正常格式的消息,在出错的情况下,我应该堆栈跟踪消息