Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js中的日志服务器崩溃_Node.js_Error Handling - Fatal编程技术网

Node.js中的日志服务器崩溃

Node.js中的日志服务器崩溃,node.js,error-handling,Node.js,Error Handling,我想记录服务器崩溃,但退出挂钩不起作用,进程退出但没有日志 process.on('exit', async () => {await sendDataToLogServer() }); 我也尝试过beforeExit钩子,但它不像exit钩子那样工作 process.on('beforeExit', async () => {await sendDataToLogServer() }); 当进程崩溃时,exit和beforexit事件不会被调度。当事件循环无事可做或调用了pro

我想记录服务器崩溃,但退出挂钩不起作用,进程退出但没有日志

process.on('exit', async () => {await sendDataToLogServer() });
我也尝试过beforeExit钩子,但它不像exit钩子那样工作

process.on('beforeExit', async () => {await sendDataToLogServer() });

当进程崩溃时,
exit
beforexit
事件不会被调度。当事件循环无事可做或调用了
process.exit()


为了捕获异常,请使用
process.on('uncaughtException',(err,origin)=>…)
或在应用程序中实现具体的错误处理。

exit
当事件循环中不再有事件时调用钩子,或者手动调用
process.exit()
退出钩子只支持它内部的同步任务,因为它内部不再有对事件循环的访问

尽管如此,
beforeExit
支持异步任务,基于

对于导致显式错误的条件,不会发出“beforeExit”事件 终止,例如调用process.exit()或未捕获的异常

所以你再也不能访问事件循环了,你要怎么做?如果它只是一个日志,那么最简单的解决方案可能是调用另一个可以访问事件循环的子进程

const childProcess = require('child_process');

process.on('exit', () => {
  childProcess.exec('node ./what-to-do-asynchronously.js');
});

事实上,我读过一些复杂的解决方案,但这看起来非常干净。是的,如果这不满足您的要求,您可能需要处理信号