2014-09-15 9 views
5

Używam pm2 (https://github.com/Unitech/pm2) w moim projekcie node.js. Przesyłam także dzienniki błędów aplikacji w Logowniach (https://logentries.com).node.js - dziennik PM2 niezatłoczone wyjątki do usługi innej firmy (jako LogiGrupy)

Zastanawiam się, czy można logować niezatłoczone wyjątki z aplikacji (gdy coś źle się kończy, a na przykład pm2 uruchamia ponownie aplikację)? Wiem, że używanie process.on('uncaughtException') jest złą praktyką, więc chciałbym usłyszeć jakieś sugestie.

Dzięki!

Odpowiedz

6

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.

Powiązane problemy