로그

시스템에서 발생하는 이벤트를 시간 순서대로 기록한 텍스트 데이터입니다. 문제가 생겼을 때 "무슨 일이 있었는지" 추적하는 데 사용합니다.

왜 필요한가?

로그 레벨

레벨용도예시
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

대표적인 로그 스택

스택구성
ELKElasticsearch + Logstash + Kibana
PLGPromtail + Loki + Grafana
클라우드AWS CloudWatch, GCP Logging

로그 vs 메트릭

항목로그메트릭
형태텍스트숫자
질문"무슨 일이 있었나?""지금 상태가 어떤가?"
용량큼작음
용도원인 분석모니터링, 알림

CSLOG에서 보기