본문 바로가기
Spring Boot (프로젝트)

스프링 부트 로그 관리하기 (Slf4j)

by Hoozy 2023. 3. 8.

로깅 라이브러리

  • 자바에서 지원하는 로그를 파일에 저장하고, 관리하는 라이브러리.

로깅 라이브러리 구현체

  1. log4j
    • 기존에 표준으로 가장 많이 사용하던 라이브러리
  2. logback
    • 기존의 log4j 이후 개발하여 보다 향상된 성능(속도, 메모리 효율성)
    • Slf4j의 기본 구현체로 스프링 부트에서는 spring-boot-starter-logging 안에 기본적으로 포함되어 있어 따로 dependency를 추가하지 않아도 사용 가능.

Slf4j (Simple Logging Facade for Java)

  • 로깅을 간단하게 사용할 수 있도록 하는 Facade로 로깅 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법이다.
  • 위에 나온 구현체의 종류와 상관없이 로깅을 사용할 수 있다.

로거 적용법

- Logger 객체 선언하여  사용
private Logger logger = LoggerFactory.getLogger(this.class);
- lombok의 @Slf4j 어노테이션 사용 (자동으로 설정된 log 객체를 사용한다.)
@Slf4j
public class Test {

    log.info(" BoardController");
}

로그 레벨 (TRACE < DEBUG < INFO < WARN < ERROR)

  • 로그 레벨에 따라 로그 메시지의 종류가 달라진다.
  • 레벨은 출력 범위를 나타내고, 현재 레벨 이상의 로그만 화면에 출력된다.
    • EX) INFO 레벨이면, INFO 레벨 이상의 로그(INFO, WARN, ERROR)만 화면에 출력.
  • TRACE : DEBUG보다 좀 더 상세한 정보 표시
  • DEBUG : 프로그램을 디버깅 하기 위한 정보를 표시 (운영 서버에서는 표시하지 않도록 설정.)
  • INFO : 상태 변경과 같은 정보성 로그 표시
  • WARN : 처리 가능한 문제, 시스템 에러의 원인이 될 수 있는 경고성 메시지를 표시
  • ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시

로그 설정

  • 스프링 부트에서는 기본적으로 로그 설정이 되어 있어서 application.yml(properties)에 세팅해도 설정이 가능하다.
    • 기본 레벨은 INFO 레벨로 설정되어 있다.
    • root : 전체 범위 레벨 설정
    • 패키지 별로 레벨 점위 설정 가능
logging:
    level:
    # root : error
        spring.controller: error # 패키지 별로 설정하는 법
  • 기본 설정 외에 더 자세하게 설정하려면 logback-spring.xml 파일을 resources 디렉토리에 만들어서 설정 가능.
    • 대소문자 구별 X
    • 크게 appender와 logger를 사용하여 설정
    • appender : 로그의 출력 형태(콘솔, 파일) 설정
    • logger : 로거마다 이름을 부여하여 사용, 패키지 별 원하는 출력 레벨 값 설정 (전역 설정 최상위 = root)

참고 자료
https://primetime.tistory.com/entry/Spring-Boot-%EB%A1%9C%EA%B7%B8-%EA%B4%80%EB%A6%AC-logback%EA%B3%BC-Slf4j

댓글