티스토리 뷰
개발환경
로그 : pm2 logrotate 사용
안녕하세요
개발을 진행하다가 언젠가 부터 서버가 터져도 로그에 에러로그가 안남는 버그가 발생 했었습니다.
치명적인 버그가 발생하였는데 log 정보에 저장이 안된다는것은 매우 치명적인 현상이었습니다!!
그래서!! 이전 로그들을 추적하여 function에 예기치 못한 오류를 만나게 되면 서버가 종료되는 현상이 발견되었습니다.
callback 함수로 이루어진 function 내에서 치명적인 버그(서버가 종료되는) pm2 logrotate가 error.log에 작성이 되지 않더군요.
(아마 nodejs 에러 출력이 pm2 logrotate에 도달하기 전에 종료되어 그런것 같습니다.)
이점을 해결하기위해 사용한것이 !!
process.on('uncaughtException') 함수를 사용하였습니다.
작성예시)
process.on('uncaughtException', (err) => {
console.error("죽지마 ㅠㅠ");
console.error(err);
// retruen것이 없기 때문에 process를 종료시켜 줘야함돠!
process.exit(1);
});
process.on('uncaughtException') 함수는 예기치 못한 오류가 발생하였을때 그것을 catch 해주는데요.
이 함수를 사용하면 서버가 종료되는현상은 막을수 있습니다. 서버가 종료되지 않기때문에 정상적으로 에러 로그가 작성이 되더군요!!
하지만, 중요한점은 모든 에러를 uncaughtException로 잡을 생각을 하지 마시고 최대한 이전에 오류가 발생하지 않도록 소스코드를 잘 작성하는게 중요하다고 생각합니다!
'node.js' 카테고리의 다른 글
[nodejs] 서버 오류 발생 시 에러코드를 보여주기 싫다면! error handler (0) | 2018.08.18 |
---|---|
mongod 검색 후 데이터 변경 시 특이한점 발견 (0) | 2018.07.24 |
댓글