본문 바로가기

Language/JavaScript

[Nodejs] pm2 cluster 모드 사용 시 log4js 로그 미출력 시

[출처] http://tod2.tistory.com/239
[출처] http://tod2.tistory.com/239

Node 에서 log4js 를 사용하고, pm2 cluster 모드 사용 시 log4js 로그가 출력되지 않는 현상이 있음.


pm2-intercom 을 활용하여 해결.


pm2 worker 에서는 log4js 출력이 되지 않고, master 프로세스에서만 출력 된다고 합니다.

pm2-intercom 에서 logEvent 를 받아 모든 프로세스로 broadcast 해준다고 하네요. 아래 그림 참고.





그림 ref: https://github.com/log4js-node/log4js-node/issues/547#issuecomment-385136125



설정 ref



근데 console.log 는 찍히고, log4js stdout 은 왜 안찍히냐가 궁금한데 (console.log 는 process.stdout 를 사용함)

Console.prototype.log 쪽에서 this._stdout 를 사용하는 것으로 보아 worker 단위로 생성되는 것이 아닐까 추정만 해봄

https://github.com/nodejs/node/blob/81bc23fe61994784de270d5fc01bc5315dfa62f3/lib/console.js#L197

https://github.com/log4js-node/log4js-node/blob/master/lib/appenders/stdout.js 


[출처] http://tod2.tistory.com/239
[출처] http://tod2.tistory.com/239