【问题标题】:Why does Winston not log errors to file?为什么 Winston 不将错误记录到文件中?
【发布时间】:2021-02-17 12:22:07
【问题描述】:

我是 Winston 的新手,当代码出现错误时,它会记录到控制台而不是日志文件。信息会正确记录到另一个文件,但错误不会。

这是我的 logger.js 文件:

const winston = require('winston')

let logger

module.exports.init = () => {
  logger = winston.createLogger({
    level: 'info',
    format:  winston.format.simple(),
    transports: [
      new winston.transports.Console(),
      new winston.transports.File({ filename: './logs/error.log', level: 'error' }),
      new winston.transports.File({ filename: './logs/info.log' })
    ]
  })

  process.on('uncaughtException', ex => {
    logger.error(ex.message)
    process.exit(1)
  })

  process.on('unhandledRejection', ex => {
    logger.error(ex.message)
    process.exit(1)
  })
}

module.exports.use = () => logger

我使用了代码here,但它不起作用。任何帮助将不胜感激。

【问题讨论】:

    标签: node.js express winston


    【解决方案1】:

    我怀疑您的进程在有机会写入日志之前就退出了。我建议等到所有消息都记录下来后再退出,请参阅Awaiting logs to be written in winston

    process.on('uncaughtException', ex => {
      logger.error(ex.message)
      logger.on('finish', () => {
          process.exit(1);
      });
    })
    
    process.on('unhandledRejection', reason => {
      logger.error("unhandledRejection: " + reason)
      logger.on('finish', () => {
          process.exit(1);
      });
    })
    

    【讨论】:

    • 谢谢,一开始我尝试这个的时候,它把错误写到了日志文件中但是没有退出程序,然后我使用了winston的exceptionHandlers属性,它成功了!
    猜你喜欢
    • 2021-10-10
    • 2018-12-16
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多