-
[Node.js] PM2 Cluster 모드에서 Log4js logging 처리하기JavaScript/Node.js 2018. 12. 14. 15:22
Node에서 프로세스 관리 모듈인 PM2를 사용하여 cluster 환경 구성시에, Log4js logging 처리가 되지 않는 경우가 발생한다.
이경우 pm2-intercom 설치를 통하여 cluseter내의 instance들에게 broadcast하여 logging 처리가 가능하게 할 수 있습니다.
#설정
0. pm2 설치
>> npm install pm2 -g
1. pm2-intercom 설치
>> pm2 install pm2-intercom
2. log4js config에 아래 2개 내용 추가
>> pm2: true
>> pm2InstanceVar: 'INSTANCE_ID'
// Log4js Settingvar log4js = require('log4js');log4js.configure({appenders: {everything: { type: 'dateFile', filename: './logs/interface.log', pattern: '.yyyy-MM-dd-hh', compress: true }, protobuf: { type: 'dateFile', filename: './logs/interface-protobuf.log', pattern: '.yyyy-MM-dd-hh', compress: true, layout: { type: 'messagePassThrough' }}, out: { type: 'console' }},categories: {default: { appenders: ['everything', 'out'], level: 'debug' }, APP_JS: { appenders: ['everything', 'out'], level: 'debug' }, PROTOBUF: { appenders: ['protobuf', 'out'], level: 'debug' }},pm2: true,pm2InstanceVar: 'INSTANCE_ID'});3. pm2 실행 파일에 아래 내용 추가 (eg, pm2.json)
>> "instance_var": "INSTANCE_ID"
{"apps": [{"name": "Sample-App","script": "./bin/www","watch": false,"env": {"NODE_ENV": "production","API_PORT": 5100},"instances": 2,"instance_var": "INSTANCE_ID","exec_mode": "cluster"}]}4. 실행 CMD
>> pm2 start pm2.json
5. 실행 상태 확인
>> PM2 list
>> log 출력 상태.
>> 2개의 인스턴스가 같은 파일내에 1초 마다 logging을 하고 있는 중,,,,
#참조 : https://gist.github.com/nomiddlename/99b7530281debc926d5e7b8a3b87350f