로그
시스템에서 발생하는 이벤트를 시간 순서대로 기록한 텍스트 데이터입니다. 문제가 생겼을 때 "무슨 일이 있었는지" 추적하는 데 사용합니다.
왜 필요한가?
- 장애 발생 시 원인 파악
- 사용자 행동 추적
- 보안 감사
- 디버깅
로그 레벨
| 레벨 | 용도 | 예시 |
| TRACE | 아주 상세한 흐름 | 함수 진입/종료 |
| DEBUG | 개발 중 디버깅 | 변수 값 출력 |
| INFO | 정상 동작 정보 | 유저 로그인 성공 |
| WARN | 잠재적 문제 | 응답 시간 느림 |
| ERROR | 에러 발생 | DB 연결 실패 |
| FATAL | 시스템 중단 수준 | 서버 다운 |
로그 예시
2024-01-15 10:23:45.123 [INFO] UserService - 로그인 성공: userId=123, ip=192.168.1.1
2024-01-15 10:23:46.456 [WARN] PaymentService - 응답 지연: 3.2초
2024-01-15 10:23:47.789 [ERROR] OrderService - 주문 실패: orderId=456, error=재고 부족
좋은 로그 작성법
// 나쁜 예
log.error("에러 발생");
// 좋은 예
log.error("주문 생성 실패: orderId={}, userId={}, reason={}",
orderId, userId, e.getMessage());
- 언제, 어디서, 무엇이 발생했는지 명확히
- 검색 가능한 키워드 포함
- 민감 정보(비밀번호, 카드번호) 절대 기록 금지
로그 수집 아키텍처
애플리케이션 → 로그 수집기 → 저장소 → 시각화
│ │ │
Logstash Elasticsearch Kibana
Fluentd Loki Grafana
대표적인 로그 스택
| 스택 | 구성 |
| ELK | Elasticsearch + Logstash + Kibana |
| PLG | Promtail + Loki + Grafana |
| 클라우드 | AWS CloudWatch, GCP Logging |
로그 vs 메트릭
| 항목 | 로그 | 메트릭 |
| 형태 | 텍스트 | 숫자 |
| 질문 | "무슨 일이 있었나?" | "지금 상태가 어떤가?" |
| 용량 | 큼 | 작음 |
| 용도 | 원인 분석 | 모니터링, 알림 |