Node.js 운영 로그 (Winston) 설정 기준¶
운영 서버(Production Server) 환경에서 Node.js 애플리케이션의 로그를 예측 가능하고, 장기 추적 가능하게 관리하기 위한 Winston 기반 로그 설정 기준을 정리한 문서.
단순 사용 예제가 아니라, 운영 장애 분석 / 감사 / 장기 로그 보관을 전제로 함.
1. 기본 원칙¶
- 운영 로그는 파일 기반으로 남겨야 함
- 로그 레벨별로 분리 저장해야 함
- 로그 파일은 일 단위 로테이션
- 로그 디렉터리는 애플리케이션 Root 기준으로 고정
2. 설치 기준¶
⚠️ 주의
/var/www/[ProjectName]/current에서 직접npm install수행 ❌
의존성 설치는 반드시/home/[User]/[ProjectName]또는 동등한 작업 경로에서 수행 후 배포함
필수 패키지¶
npm install winston --save
npm install winston-daily-rotate-file --save
npm install app-root-path --save
패키지 역할¶
winston
→ Node.js 표준 로깅 라이브러리winston-daily-rotate-file
→ 일 단위 로그 파일 로테이션app-root-path
→ 실행 위치와 무관하게 프로젝트 루트 경로 확보
3. 로그 레벨 운영 기준¶
| Level | 용도 |
|---|---|
| error | 서비스 장애, 예외, 즉시 조치 필요 |
| warn | 잠재적 문제, 설정 이상 |
| info | 정상 흐름, 주요 이벤트 |
| http | 요청/응답 로깅 |
| verbose | 상세 흐름 추적 |
| debug | 디버깅용 |
| silly | 매우 상세한 개발/분석용 |
운영 서버에서는
debug,silly로그 사용 시 로그 용량 증가에 주의
4. 운영 주의사항¶
- 로그 디렉터리(
logs/)는 PM2 실행 사용자 권한으로 생성되어야 함 - 로그 파일은 배포 시 삭제하지 않음
- 로그는 장애 분석의 1차 근거 자료임
- 콘솔 로그는 임시 확인용이며 운영 로그로 간주하지 않음
5. 정리¶
- Winston은 운영 로그 관리 도구
- 로그는 남기는 것보다 관리하는 방식이 중요
- 파일 분리 + 로테이션 + 환경 분기 없이는 운영 불가