ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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 Setting
    var 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


Designed by Tistory.