gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 22:52:18 27 4
gpt4 key购买 nike

我需要一个用于 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);
}

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

[2019-07-29T16:07:24.763] [INFO] Mailer - Starting application

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

有什么建议吗?

最佳答案

为了避免更改应用程序逻辑和所有 process.exit() 调用,我将 file appender 替换为其同步版本 fileSync 现在一切都按预期工作。因此,我唯一更改的是声明"file"附加程序的行:

    'file': { type: 'fileSync', filename: 'logs/mailer.log' }

干杯!

关于javascript - Node 的 log4js 不输出到文件,只输出到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57255660/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com