Spring/응용

Spring 로그 레벨(Log Level)

가지코딩 2025. 6. 18. 00:27

로그 레벨(Log Level)이란?

  • 로그 레벨은 로그 메시지의 중요도 또는 심각도를 나타내는 분류 기준
  • 로그 레벨을 설정하면 원하는 수준의 로그만 출력하거나 저장할 수 있다.

로그 레벨 종류

레벨 설명 사용 예시
TRACE - 가장 낮은 수준의 로그로, 모든 내부 동작 정보를 출력
- 성능 저하가 발생할 수 있어 운영 환경에서는 비추천
메소드 진입/종료, 루프 내부 처리 등
DEBUG - 개발 중에 사용하는 대표적인 로그 레벨
- 흐름 확인, 조건 분기, 주요 변수 값 등을 기록할 때 사용
설정 값 확인, 흐름 제어 상태, 내부 변수 값 등
INFO - 서비스 상태 변화나 사용자가 이해해도 되는 수준의 메시지
- 운영 환경에서 기본적으로 켜져 있는 경우가 많음
서버 시작, 요청 수신, 완료 메시지 등
WARN - 심각하지는 않지만 주의가 필요한 문제 상황
- 개발자의 관심을 끌어야 할 정도의 경고 메시지
설정 누락, deprecated API 사용 등
ERROR - 프로그램 실행에 치명적인 오류를 의미
- 예외 처리가 필요하거나 사용자에게 알림이 필요한 경우 사용
Exception 발생, DB 연결 실패 등

 

* Logback 에는 FATAL 레벨이 없다. ERROR 로 매핑된다고 한다.

 

 

Slf4j 로그 출력 예시

@Slf4j
@Service
public class MyService {
    public void doSomething() {
        log.trace("Trace level - very detailed info");
        log.debug("Debug level - for debugging");
        log.info("Info level - general message");
        log.warn("Warn level - something may go wrong");
        log.error("Error level - something went wrong");
    }
}

로그 레벨 설정하기

 

로그 레벨 동작 방식

  • 로그 레벨을 하나 설정하면, 그 레벨 이상(심각도가 같거나 더 높은)의 로그들이 모두 출력된다.
  • 로그 레벨 우선 순위: TRACE < DEBUG < INFO < WARN < ERROR
  • ex. 로그 레벨을 TRACE로 설정하면, TRACE, DEBUG, INFO, WARN, ERROR 로그가 모두 출력된다.
  • ex. 로그 레벨을 INFO로 설정하면, INFO 이상 레벨인 INFO, WARN, ERROR 로그만 출력되고, TRACE와 DEBUG는 출력되지 않는다.

 

로그 레벨 설정하기

  • 특정 패키지나 클래스 단위로 로그 레벨을 다르게 줄 수 있다.
  • appilcation.properties 또는 application.yaml 에 설정
  • 설정 형식: logging.level.<패키지 또는 클래스>=<레벨>
# 전체 로그 레벨 설정
logging.level.root=INFO

# 특정 패키지 또는 클래스 로그 레벨 설정
logging.level.com.example.myapp=DEBUG
logging.level.org.hibernate.SQL=TRACE
logging:
  level:
    root: INFO
    com.example.myapp: DEBUG
    org.hibernate.SQL: TRACE

 

 

로그 레벨 설정 장점

  • 필요한 로그만 출력해 불필요한 정보 감소
  • 과도한 로그로 인한 성능 저하 방지
  • 개발 시엔 상세 로그, 운영 시엔 중요한 로그만 골라 디버깅과 모니터링에 도움
  • 로그 용량 관리가 쉬워 저장 공간 절약
  • 민감 정보 노출을 줄여 보안 강화

응용

 

환경별 로그 레벨 설정

개발 환경

  • 상세한 로그를 모두 기록해서 디버깅에 도움을 준다.
logging.level.root=DEBUG
logging.level.com.myapp=TRACE

 

운영 환경

  • 시스템 상태만 확인하고, 에러만 집중해서 모니터링한다.
logging.level.root=INFO
logging.level.com.myapp=ERROR

 

 

로그 레벨 설정으로 문제 해결하기

  1. 기본 로그레벨은 보통 INFO로 설정되어 있다.
  2. 문제 발생 시 로그 레벨을 DEBUG 또는 TRACE로 낮춰 상세한 실행 정보를 기록한다.
  3. 문제 발생 시점과 전후 상황을 정확히 추적할 수 있다.

해결 과정 단계 참고 !

https://gajicoding.tistory.com/356

 

Spring Security 에러 핸들링 오류 해결, /error 접근 권한 문제

문제 상황jwt Filter 와 Spring Security 를 문제 없이 통과함컨트롤러와 서비스에 잘 도달서비스의 비즈니스 로직에서 예외 발생 (비밀번호 오류 시 예외 처리)응답 메시지에 Spring Security의 exceptionHandli

gajicoding.tistory.com


참고 자료

 

https://docs.spring.io/spring-boot/reference/features/logging.html#features.logging.log-levels

 

Logging :: Spring Boot

By default, Spring Boot logs only to the console and does not write log files. If you want to write log files in addition to the console output, you need to set a logging.file.name or logging.file.path property (for example, in your application.properties)

docs.spring.io