node.js – PM2将未捕获的exceptionlogging到第三方服务(如Logentries)

我在我的node.js项目中使用pm2( https://github.com/Unitech/pm2 )。 此外,我发送Logentries( https://logentries.com )中的应用程序的错误日志。

我想知道是否有可能从应用程序中logging未捕获的exception(当某些事情严重失败,pm2重新启动应用程序)? 我知道使用process.on('uncaughtException')是不好的做法,所以想听听一些build议。

谢谢!

你在哪里读过这个process.on('uncaughtException')是一个坏习惯?

只要您在loginexception之后退出进程,我不会看到有什么不好,这里是一个例子:

 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的替代scheme是使用pm2-interface并监听process:exitprocess: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'); }); }); 

当通过监控进程pipe理多个进程时,这非常有用。

您可能想要查看关于如何构build自定义pm2logging器的博客post。 它可以给你一些关于通过pm2-interface监视进程的想法。