Gdzie przeczytałeś, że process.on('uncaughtException')
jest złą praktyką?
Dopóki zakończyć proces po zalogowaniu wyjątek nie widzę, co jest złe, to jest przykład:
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 Error reference
Edit pm2- Interfejs jest teraz przestarzały, zamiast niego użyj require('pm2')
. Będziesz mógł zrobić dokładnie to samo, co poniżej, używając bus system events.
Alternatywnym z PM2 jest użycie pm2-interface i słuchanie zdarzeń process:exit
lub process: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');
});
});
To jest naprawdę przydatny podczas zarządzania więcej niż jeden proces w procesie monitorowania.
Możesz sprawdzić wpis na blogu pod adresem how to build a custom pm2 logger. To może dać ci kilka pomysłów na temat monitorowania procesów poprzez pm2-interface
.