2014-09-15 8 views
5

내 node.js 프로젝트에 pm2 (https://github.com/Unitech/pm2)를 사용하고 있습니다. 또한 Logentries (https://logentries.com)에서 앱 오류 로그를 보내고 있습니다.node.js - PM2 타사 서비스에 대한 캐치되지 않는 예외 (Logentries)

내가 잡히지 않는 예외를 앱에서 로깅하는 것이 가능한지 궁금합니다 (어떤 것이 잘못되어 pm2가 앱을 다시 시작하는 경우). process.on('uncaughtException')을 사용하는 것이 좋지 않으므로 몇 가지 제안을 듣고 싶습니다.

감사합니다.

답변

6

어디서 읽으셨습니까? 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 Error reference

편집 pm2- 인터페이스가 더 이상 사용되지 않으므로 대신 require('pm2')을 사용하십시오. bus system events을 사용하여 아래에서와 똑같이 수행 할 수 있습니다. PM2와


대안은 process:exit 또는 process:exception 이벤트에 pm2-interface와 듣기를 사용하는 것입니다

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'); 
    }); 
}); 

모니터링 과정을 통해 둘 이상의 프로세스를 관리 할 때 정말 유용합니다.

how to build a custom pm2 logger의 블로그 게시물을 확인하시기 바랍니다. pm2-interface을 통해 프로세스 모니터링에 대한 아이디어를 얻을 수 있습니다.