Table of Contents
로깅
- 서비스 또는 시스템에서 발생한 유용한 정보를 출력 또는 저장하는 것을 말한다
로깅 대상
- 서비스를 운영하는데 필요한 모든 데이터가 로깅의 대상이 될 수 있다
- ex. 사용자 클릭 이벤트, CPU, 메모리 같은 시스템 정보 등
로깅을 하는 이유
- 사용자의 행동(ex. 클릭) 이벤트를 저장함으로써 사용자에게 맞는 유용한 정보를 제공할 수 있다
- 서비스 지표 또는 시스템 정보를 저장함으로써 이상 유무를 모니터링할 수 있다
- 서비스나 시스템에 문제가 생겼을 때 로깅을 통해 발생한 문제를 분석∙진단할 수 있다
로깅 형태
- 로그마다 중요도를 나타내는 레벨을 표기한다
- 언제, 어디서, 무엇과 같은 필수요소를 표기한다
- JSON과 같은 구조화된 형태를 사용한다
- 민감한 정보는 저장하지 않는다
로그 레벨
로그 레벨 | 설명 |
---|---|
DEBUG | 개발 단계에서 애플리케이션의 내부 동작을 이해하고 문제를 분석하는 데 유용한 정보 |
INFO | 애플리케이션의 주요 이벤트나 실행 상태에 관한 정보 |
WARN | 애플리케이션이 정상적으로 동작하지만 주의가 필요한 상태에 관한 정보 |
ERROR | 심각한 문제 또는 예외 상황을 나타내며, 애플리케이션의 정상적인 동작에 영향을 미칠 수 있는 문제에 관한 정보 |
DEBUG
<INFO
<WARN
<ERROR
순으로 레벨이 높아진다- 레벨이 낮을수록 verbose 해진다
DEBUG
인 경우DEBUG
~ERROR
레벨의 로그가 모두 기록된다INFO
인 경우INFO
~ERROR
레벨의 로그가 기록된다ERROR
인 경우ERROR
레벨의 로그만 출력된다
- 개발 환경에선
DEBUG
, 프로덕션 환경에선INFO
레벨을 많이 사용한다
로그 패턴
요소 | 설명 | 예시 |
---|---|---|
레벨 | 로그의 레벨 | INFO |
날짜 | 발생한 날짜/시간 | 2014-05-01 15:40:51 |
위치 | 발생한 클래스/메서드 | UserController |
메세지 | 유용한 메세지 | not exists user email |