【发布时间】:2020-03-14 22:57:25
【问题描述】:
我正在使用winston 3 记录我的数据。但有时它在进程退出之前没有记录错误。
以下进程将退出,不登录logfile.log:
const winston = require('winston');
winston.add(new winston.transports.File({
filename: 'logfile.log'
}));
winston.info('please log me in');
process.exit(1);
尝试的解决方案之一是使用回调:
const winston = require('winston');
const logger = new winston.createLogger({
new winston.transports.File({
filename: 'logfile.log'
}));
winston.info('please log me in', () => {
process.exit(1);
});
setTimeout(() => {}, 100000000000); // pause the process until process.exit is call
但是 Winston 3.x 有callback issue,所以上面的代码不起作用,进程不会退出。
我正在寻找可行的解决方案?任何帮助将不胜感激。我的操作系统是 Ubuntu 16.04,Node 10.17。
编辑 1:
我也尝试过Prabhjot Singh Kainth 的建议使用finish 事件来触发进程退出:
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({
filename: 'logfile.log'
})
]
});
logger.info('please log me in');
logger.on('finish', () => {
process.exit();
});
logger.end();
setTimeout(() => {}, 100000000000); // pause the process until process.exit is call
在上述情况下,进程将退出,但不会创建日志文件。
【问题讨论】: