Winston은 Node.js 환경에서 사용되는 대표적인 로깅 라이브러리로, 로그의 레벨 관리, 출력 방식, 포맷, 저장 위치 등을 유연하게 설정할 수 있는 강력한 로거(Logger)입니다.
다양한 환경(콘솔, 파일, 외부 서버 등)에 로그를 출력할 수 있으며, 로그 수준(Level)에 따라 출력 조건을 설정할 수 있습니다.
[Logger] → [Transport] → [Output]
이유 | 설명 |
---|---|
✅ 다양한 출력 방식 | 콘솔, 파일, HTTP 등 원하는 경로에 로그 출력 가능 |
✅ 로그 레벨 관리 | info, warn, error 등 레벨별 필터링 가능 |
✅ 포맷 설정 유연 | 시간, JSON, 컬러 출력 등 다양한 포맷 커스터마이징 가능 |
✅ 확장성 | 여러 개의 Transport를 추가하여 로깅 다중 처리 가능 |
✅ 미들웨어와 연동 쉬움 | Express 등 웹 서버와의 통합이 간편 |
구분 | Winston | Promtail |
---|---|---|
🎯 목적 | 로깅 라이브러리 (로그 생성) | 로그 수집기 (로그 전송) |
🧱 역할 | 앱 내부에서 로그를 생성하고 포맷함 | 생성된 로그 파일을 읽어서 Loki로 전송 |
🛠️ 사용 위치 | Node.js 애플리케이션 내부 (코드에서 사용) | 서버 또는 Pod에서 로그파일 읽는 외부 에이전트 |
💾 대상 | 콘솔, 파일, DB 등 자유롭게 지정 가능 | 일반적으로 Loki (Grafana 로그 저장소) |
🔗 연동 방식 | express , nestjs , winston-daily-rotate-file 등 직접 코드에 포함 | 로그 파일을 tail 하여 Loki로 push |
📦 설치 대상 | 애플리케이션 코드에 직접 설치 | 서버 또는 쿠버네티스 클러스터 노드에 설치 |