ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Boot - Logback 적용하기
    Framework & Library/Spring Boot 2022. 2. 9. 12:24

    Logback

    Logback이란?

     - Logback이란 Log4j를 기반으로 개발된 로깅(Logging) 라이브러리이다.

     - Log4j에 비해 약 10배 정도 빠른 퍼포먼스를 자랑하며, 메모리 효율성이 높다

     - 출시 순서 : Log4j Logback → Log4j2

     

    Logback 특징

     - 로그에 특정 레벨을 설정할 수 있다. 따라서, 실 운영과 테스트 상황에서 각각 다른 출력 레벨을 설정하여 로그를 확인이 가능하다.

     - 개발자가 선호하는 출력 방식을 설정할 수 있다.

     - 설정 파일을 일정 시간마다 스캔하여 관리하기 때문에, 애플리케이션의 중단 없이 설정의 변경이 가능하다.

     - 별도의 프로그램 없이 자체적으로 로그 압축을 지원한다.

     - 로그 보관 기간을 설정할 수 있다.

     

    로그 레벨
    Trace → Debug → Info → Warn → Error

     

    1. Trace : Debug 레벨보다 더 디테일한 메시지를 표현하기 위한 레벨

    2. Debug : 애플리케이션의 디버깅을 위한 메시지 레벨

    3. Info : 상태 변경과 같은 정보성 메시지를 의미

    4. Warn : 시스템 에러의 원인이 될 수 있는 경고성 레벨, 처리가 가능한 사항을 의미

    5. Error : 로직 수행 중에 오류가 발생한 경우, 시스템적으로 심각한 문제가 발생하여 작동이 불가한 경우

     

    Logback 설정 파일의 형식

     

    1. appender

     - 로그의 형태 및 어디에 출력할지 설정하기 위한 영역이다.

     - 대표적인 appender 형식은 아래와 같다.

         ConsoleAppender : 콘솔에 로그를 출력하는 방식

         FileAppender : 파일에 로그를 출력하는 방식

         RollingFileAppender : 여러 개의 파일을 순회하며 로그를 저장하는 방식

         SMTPApender : 로그를 메일로 보내는 방식

         DBAppender : DB에 로그를 저장하는 방식

     

    2. encoder

     - appender 내에 포함되는 항목이며, pattern을 사용하여 원하는 형식으로 로그를 표현할 수 있다.

     

    3. root

     - 설정한 appender를 참조하여 로그의 레벨을 설정할 수 있다.

     - root 태그는 전역 설정이며, 지역 설정을 하기 위해서는 logger 태그를 사용한다.

     

    로그 패턴
    <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger %msg %n</pattern>
    패턴 의미
    %Logger{length} Logger Name
    %-5level 로그 레벨, -5는 출력의 고정폭 값
    %msg 로그 메세지 영역
    %{PID:-} Process id
    %d 로그 기록 시간
    %p 로깅 레벨
    %F 로깅이 발생한 프로그램 파일명
    %M 로깅이 발생한 메서드의 이름
    %I 로깅이 발생한 호출지의 정보
    %L 로깅이 발생한 호출지의 라인 수
    %thread 현재 Thread 이름
    %t 로깅이 발생한 Thread 이름
    %c 로깅이 발생한 카테고리
    %C 로깅이 발생한 클래스 이름
    %m 로그 메시지
    %n 줄바꿈
    %% % 출력
    %r 애플리케이션 실행 후 로깅이 발생한 시점까지의 시간

    Logback 적용

    logback-spring.xml 파일 생성
    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration scan="true" sanPeriod="30 seconds">
    
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>DEBUG</level>
            </filter>
            <encoder>
                <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger{30} %msg %n</pattern>
            </encoder>
        </appender>
    
        <root level="INFO">
            <appender-ref ref="console"/>
        </root>
    </configuration>

     - Spring Boot에는 기본적으로 Logback이 포함되어 있다. 따라서, 별도의 설치가 필요 없이 사용이 가능하다.

     - src/main/resources 위치에 logback-spring.xml 파일을 생성하고 위 코드를 작성함으로써, 로그 출력에 대한 추가적인 설정이 가능하다.

     

    ProductController 클래스 변경

     

     - ProductController 클래스 내 getProduct() 메서드의 로그를 출력하기 위해 위와 같은 코드를 추가해준다.

     - 로깅을 하기 위해서는 Logger 객체를 얻어야 하는데, LoggerFactory.getLogger() 메서드를 통해서 얻을 수 있다.

     - LOGGER.info() 메서드를 사용해서 Info 레벨의 로그들을 출력할 수 있도록 설정한다.

     

    테스트

     

     - getProduct() 메서드에 대한 API를 호출하기 위해 Postman을 통해서 요청을 수행한다.

     

     

     - getProduct() 메서드에 대한 API를 호출하면 위와 같은 로그가 콘솔에 출력됨을 확인할 수 있다.


     

    GitHub - qlsdud0604/spring-boot-study

    Contribute to qlsdud0604/spring-boot-study development by creating an account on GitHub.

    github.com

     

    728x90

    댓글

Designed by Tistory.