AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

로깅을 위한 Express, Morgan 및 Winston 사용법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Node.js/Express 앱 개발자(중간 이상 수준)

핵심 요약

  • Morgan은 HTTP 요청 로깅에 최적화된 경량 라이브러리로, 개발 중 요청 추적에 사용 (예: npm install morgan)
  • Winston은 애플리케이션 레벨 로깅을 위한 강력한 도구로, 파일/콘솔/외부 서비스로 로그 전송 가능 (예: npm install winston)
  • MorganWinston을 결합하여 HTTP 요청과 애플리케이션 이벤트를 동시에 모니터링 가능

섹션별 세부 요약

1. Morgan 설치 및 사용

  • npm install morgan으로 설치
  • app.use(morgan('dev'))로 개발용 간단한 로깅 설정 (예: GET / 200 8.104 ms - 11)
  • combined, short 등 사전 정의된 포맷 또는 커스텀 포맷 사용 가능 (예: :method :url :status :response-time ms)

2. Winston 설치 및 구성

  • npm install winston으로 설치
  • level, format, transports 옵션으로 로그 레벨/포맷/출력 경로 설정 (예: console, error.log, combined.log)
  • logger.info()logger.error()로 로그 기록 (예: /health 라우트에서 logger.info('Health check route hit'))

3. Morgan과 Winston 연동

  • stream 객체를 통해 Morgan 로그를 Winston으로 전달 (예: const stream = { write: (message) => logger.info(message.trim()) })
  • app.use(morgan('combined', { stream }))로 HTTP 요청 로그를 Winston에 통합

4. 툴 비교 및 사용 권장사항

  • Morgan → 개발 중 HTTP 요청 추적 (예: dev preset)
  • Winston → 프로덕션에서 오류 추적 및 파일 기록 (예: error.log, combined.log)
  • 결합 사용 → 전반적인 애플리케이션 모니터링 (예: 요청/오류/커스텀 이벤트 동시 로깅)

결론

  • Morgan은 개발 단계에서 HTTP 요청 로깅에, Winston은 프로덕션에서 오류 및 이벤트 추적에 적합
  • 두 도구를 결합하여 HTTP 요청과 애플리케이션 레벨 로그를 통합 관리하고, 로그 포맷을 JSON 또는 커스텀 형식으로 설정 가능
  • npm install morgan winston으로 설치 후 morgan('combined', { stream })winston.createLogger()를 통해 실무에 적용