我在我的 node.js 项目中使用 pm2 ( https://github.com/Unitech/pm2 )。我还在 Logentries ( https://logentries.com ) 中发送应用程序的错误日志。
我想知道是否可以从应用程序中记录未捕获的异常(例如,当某些事情严重失败并且 pm2 重新启动应用程序时)?我知道使用process.on('uncaughtException')
是不好的做法,所以想听听一些建议。
谢谢!
我在我的 node.js 项目中使用 pm2 ( https://github.com/Unitech/pm2 )。我还在 Logentries ( https://logentries.com ) 中发送应用程序的错误日志。
我想知道是否可以从应用程序中记录未捕获的异常(例如,当某些事情严重失败并且 pm2 重新启动应用程序时)?我知道使用process.on('uncaughtException')
是不好的做法,所以想听听一些建议。
谢谢!
你在哪里读到这process.on('uncaughtException')
是一个不好的做法?
只要您在记录异常后退出进程,我看不出有什么问题,这里有一个例子:
process.on('uncaughtException', function(e) {
console.error('Ouch, an unhandled exception');
//I like using new Error() for my errors (1)
console.error(e instanceof Error ? e.message : e);
process.exit(1);
});
(1): Javascript 错误参考
编辑
pm2-interface 现在已弃用,请require('pm2')
改用。通过使用总线系统事件,您将能够执行与以下完全相同的操作。
pm2 的替代方法是使用pm2-interface并监听process:exit
orprocess:exception
事件:
var ipm2 = require('pm2-interface')();
ipm2.on('ready', function() {
console.log('Connected to pm2');
ipm2.bus.on('process:exception', function(data){
console.log(data.pm2_env.name + 'had an exception');
});
});
这在通过监视进程管理多个进程时非常有用。
您可能想查看有关如何构建自定义 pm2 记录器的博客文章。它可以为您提供一些关于通过pm2-interface
.