Node 的 log4js 不输出到文件,只输出到控制台

Fel*_*Fel 3 javascript node.js log4js-node

我需要一个 NodeJS 应用程序的基本日志系统,所以我正在用 做一些测试log4js,这似乎是这些情况的标准。我需要将消息打印到控制台和文件,因此我编写了以下代码:

// Logger
var log4js = require('log4js');

log4js.configure({
  appenders: {
    'console': { type: 'console' },
    'file': { type: 'file', filename: 'logs/mailer.log' }
  },
  categories: {
    default: { appenders: ['file', 'console'], level: 'DEBUG' },
  }
});

var logger = log4js.getLogger("Mailer");

logger.info("Starting application");

try {
  // CODE TO READ APP CONFIG FILE
}
catch(e) {
  logger.error("Couldn't read app configuration file (config.yml)");

  // This is the trouble maker. It kills the app without flushing the logs
  process.exit(1);
}
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,日志显示如下:

[2019-07-29T16:07:24.763] [INFO] Mailer - Starting application
Run Code Online (Sandbox Code Playgroud)

问题是我可以在控制台中看到消息,但日志文件仍然是空的。如果我删除它并再次运行应用程序,它就会被创建,所以我认为问题是缺少选项或类似的东西。

有什么建议吗?

Fel*_*Fel 5

为了避免更改应用程序逻辑和所有process.exit()调用,我已将fileappender替换为其同步版本fileSync,现在一切都按预期进行。所以,我唯一改变的是我声明“文件”附加程序的行:

    'file': { type: 'fileSync', filename: 'logs/mailer.log' }
Run Code Online (Sandbox Code Playgroud)

干杯!