簡體   English   中英

Log4js 不從 catch 塊寫入文件

[英]Log4js not write into the file from the catch block

我想使用 log4js 在 try catch 構造上記錄錯誤。 我有下一個代碼:

let log4js = require('log4js')
log4js.configure({
  appenders: {
    asterisk: {type: 'file', filename: 'filename'},
    out: {type: 'stdout'},
  },
  categories: {default: {appenders: ['asterisk', 'out'], level: 'all'}}
})
const logger = log4js.getLogger('asterisk')
async function myFunc() {
  try {
    let tmp = await someFunc()
  }
  catch (err) {
    logger.error(err)
    process.exit(1)
  }
}
myFunc()

發生錯誤時,我會在控制台中看到它,但不會寫入文件。 如果我在 try..catch 塊之外使用記錄器,那么一切正常。 可能是什么問題呢?

正如在 GitHub 上向我建議的那樣,問題出在 process.exit - 這會導致節點在 logger.error 調用(在幕后是異步的)寫入文件之前退出。 正確的代碼將是這樣的:

logger.error(err)
logger.shutdown(() => process.exit(1))

它工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM