Node.js 프로젝트가 마침표에 가까워질 수록 프로세스를 어떻게 관리해야 할지 고민한다. 요즘은 Node.js Domain API에 완전히 당해서 넋이 나가 있었다.
PM2 로 App 을 시작 할 때 Debug Log를 감시하고 싶을 때가 있다. 아이러니하게도 node debug로 사용된 로그는 stderr 로 출력된다.
stdout 으로 출력하기 위해서는 환경변수를 추가해야 한다.
DEBUG_FD=1
아래는 pm2 설정 JSON 이다. 취향에 따라서 직접 명령으로 실행해도 무관 하다.
{
"apps": [
{
"name" : "test-app",
"script" : "./test.js",
"error_file" : "./logs/app/test-app.stderr.log",
"out_file" : "./logs/app/test-app.stdout.log",
"pid_file" : "./pids/test-app.pid",
"instances" : 0,
"min_uptime" : "1000s",
"max_restarts" : 15,
"watch" : false,
"ignore_watch" : ["[\\/\\\\]\\./", "node_modules"],
"merge_logs" : true,
"exec_interpreter" : "node",
"exec_mode" : "cluster_mode",
"autorestart" : false,
"vizion" : false,
"env" : {
"NODE_ENV" : "development",
"DEBUG" : "*",
"DEBUG_FD" : 1
}
}
]
}
명령어를 실행 시 node debug로 사용된 로그는 stdout 으로 출력된다.
pm2 start pm2-test.json
정상적으로 출력 되는 것을 확인 할 수 있다.