我知道Winston日志记录是异步的,并且在进行日志记录时会执行process.exit(1),因此原因是日志文件中不存在任何内容。但是,当我用setTimeout抛出新的错误时,Winston现在可以输出到日志文件了。
我的问题是setTimeout如何影响未捕获的异常回调中的两行,从而使winston现在能够完成对文件的记录,然后进程退出。
module.exports = () => {
winston.add(new winston.transports.File({filename : 'server.log'}));
/*Handle uncaught exception */
process.on('uncaughtException',ex => {
winston.error(ex.stack);
process.exit(1);
});
setTimeout(()=> {throw new Error('Error made') },2000);