로그 레벨이란?
로그 레벨은 로그의 중요도나 목적에 따라
로그를 구분해서 남기는 기준이다.
모든 로그가 같은 의미를 가지는 것은 아니다.
단순히 흐름을 확인하기 위한 로그도 있고,
문제가 발생했을 때 반드시 확인해야 하는 로그도 있다.
그래서 로그를 남길 때는 상황에 맞게
info, warn, error 같은 레벨을 구분해서 사용한다.
로그 레벨을 나누는 이유
로그 레벨을 나누지 않고 모든 내용을 똑같이 남기면
중요한 로그와 덜 중요한 로그를 구분하기 어렵다.
예를 들어 정상적인 요청 처리 로그와
실제 장애가 발생한 로그가 같은 수준으로 남는다면,
문제가 생겼을 때 원인을 찾기 힘들어진다.
로그 레벨을 나누면 다음과 같은 장점이 있다.
- 정상 흐름과 오류 상황을 구분할 수 있다
- 운영 환경에서 필요한 로그만 확인할 수 있다
- 문제가 발생했을 때 중요한 로그를 빠르게 찾을 수 있다
info
info는 애플리케이션의 정상적인 주요 흐름을 기록할 때 사용한다.
예를 들어 사용자가 계좌 생성을 요청했거나,
매수 요청이 정상적으로 들어온 경우에 사용할 수 있다.
log.info("계좌 생성 요청 userId={}", userId);
log.info("매수 요청 accountId={}, stockCode={}", accountId, stockCode);
info는 에러가 아니라
정상적으로 진행된 중요한 이벤트를 남기는 용도이다.
warn
warn은 당장 시스템이 멈추는 에러는 아니지만,
주의가 필요한 상황에서 사용한다.
예를 들어 요청 값이 이상하거나,
예상과 다른 상황이 발생했지만 처리는 가능한 경우에 사용할 수 있다.
log.warn("잔액 부족으로 매수 실패 accountId={}, balance={}", accountId, balance);
이 경우 서버가 죽은 것은 아니지만,
사용자의 요청이 정상적으로 처리되지 않았기 때문에
나중에 확인할 필요가 있다.
error
error는 실제 예외가 발생했거나,
기능이 정상적으로 처리되지 못한 경우에 사용한다.
예를 들어 DB 저장 실패, 외부 API 호출 실패,
예상하지 못한 예외가 발생한 경우에 사용할 수 있다.
try {
accountService.createAccount(userId);
} catch (Exception e) {
log.error("계좌 생성 실패 userId={}", userId, e);
throw e;
}
error 로그에는 예외 객체 e를 함께 넘기는 것이 좋다.
그래야 어떤 예외가 발생했는지와 어디서 발생했는지 확인할 수 있다.
'Study' 카테고리의 다른 글
| Terraform 개념 정리 (0) | 2026.05.12 |
|---|---|
| Jenkins 개념 정리 (0) | 2026.05.11 |
| 로그 찍기의 중요성 (0) | 2026.05.09 |
| Redis로 분산락 거는 방법 (0) | 2026.05.07 |
| 분산락 (0) | 2026.05.06 |