Winston

노력하는백엔드·2025년 8월 10일
0

이론 정리

목록 보기
5/9

Winston이란?

Winston은 Node.js 환경에서 사용되는 대표적인 로깅 라이브러리로, 로그의 레벨 관리, 출력 방식, 포맷, 저장 위치 등을 유연하게 설정할 수 있는 강력한 로거(Logger)입니다.

다양한 환경(콘솔, 파일, 외부 서버 등)에 로그를 출력할 수 있으며, 로그 수준(Level)에 따라 출력 조건을 설정할 수 있습니다.


Winston 구조 요약

[Logger] → [Transport] → [Output]
  • Logger: 로그를 기록하는 핵심 객체
  • Transport: 로그의 출력 경로를 정의 (콘솔, 파일, HTTP 등)
  • Output: 실제 로그가 출력되는 결과물 (형태 및 위치)

왜 Winston을 쓰는가?

이유설명
✅ 다양한 출력 방식콘솔, 파일, HTTP 등 원하는 경로에 로그 출력 가능
✅ 로그 레벨 관리info, warn, error 등 레벨별 필터링 가능
✅ 포맷 설정 유연시간, JSON, 컬러 출력 등 다양한 포맷 커스터마이징 가능
✅ 확장성여러 개의 Transport를 추가하여 로깅 다중 처리 가능
✅ 미들웨어와 연동 쉬움Express 등 웹 서버와의 통합이 간편

Winston vs 다른 로깅 도구

구분WinstonPromtail
🎯 목적로깅 라이브러리 (로그 생성)로그 수집기 (로그 전송)
🧱 역할앱 내부에서 로그를 생성하고 포맷생성된 로그 파일을 읽어서 Loki로 전송
🛠️ 사용 위치Node.js 애플리케이션 내부 (코드에서 사용)서버 또는 Pod에서 로그파일 읽는 외부 에이전트
💾 대상콘솔, 파일, DB 등 자유롭게 지정 가능일반적으로 Loki (Grafana 로그 저장소)
🔗 연동 방식express, nestjs, winston-daily-rotate-file 등 직접 코드에 포함로그 파일을 tail 하여 Loki로 push
📦 설치 대상애플리케이션 코드에 직접 설치서버 또는 쿠버네티스 클러스터 노드에 설치
profile
열심히 노력하는 백엔드입니다.

0개의 댓글