STUDY/Spring

Spring Boot | logback 설정

개미606 2021. 5. 18. 13:22

Logback

  • Logbackspring-boot-starter-web에 포함되어 있기 때문에, 해당 의존성이 추가되어있다면 따로 추가할 필요가 없다.
  • application.properties파일에 loggin.level을 이용해 로깅 설정을 변경할 수 있다.
  • 로깅 시스템의 세분화된 설정을 위해 보통 logback.xml파일로 설정하며, 스프링 부트에서는 logback-spring.xml을 사용할 것을 권장한다.
  • Logback은 프로그래밍 방식, XML, Groovy 방식으로 구성할 수 있다.
  • Logback 0.9.17버전부터 대소문자를 구분하지 않는다.

logback-spring.xml 파일 생성

<configuration></configuration> 사이에 Logback 세부 설정을 추가하면 된다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>

appender

로그의 형태를 설정하고, 로그 메시지를 어디(콘솔 혹은 파일)에 출력할지 설정한다.
아래의 설정은 STDOUT이라는 식별자로 <appender>를 설정하고, ch.qos.logback.core.ConsoleAppender클래스 설정을 통해 콘솔에 로그를 출력하겠다는 뜻이다.

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
</appender>

appender의 종류는 여러가지가 있다. logback appender

  • ConsoleAppender : 콘솔에 로그를 찍는다.
  • FileAppender : 파일에 로그를 찍는다.
  • RollingFileAppender : FileAppender를 상속, 여러 파일로 순회하여 로그를 찍는다. (지정 용량을 초과하면 새로운 파일로..)
  • SMTPAppender : 로그를 찍어서 이메일로 전송
  • DBAppender : 로그이벤트를 데이터베이스 테이블에 insert한다.
  • ETC : SyslogAppender, SiftingAppende

로그의 패턴을 설정할 때는 <pattern>태그를 사용한다.
아래처럼 <encoder>태그 안에 <pattern>태그를 정의한 뒤, 로그의 출력 패턴을 설정할 수 있다.

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

패턴은 아래의 요소들로 작성할 수 있다.

  • %logger{length} : 로거 네임 축약 length는 최대 길이를 지정한다.
  • %-5level : 로그 레벨. -5는 고정폭 값을 설정한 것 (최대 5글자)
  • %msg : 로그 메시지
  • ${PID:-} : 프로세스 아이디
  • %d : 시간
  • %thread : 현재 스레드 명
  • %M : 로그를 발생시킨 메서드 명

root와 logger

<root>는 root logger를 설정한다. level속성을 가지며, levelTRACE, DEBUG, INFO, WARN, ERROR, ALL 혹은 OFF의 값을 설정할 수 있다. 0개 이상의 <appender-ref>요소를 포함해야 한다.
<logger>는 로거를 구성하는 요소로, name이라는 필수 요소를 설정해야 하며 level역시 설정 가능하다. additivityroot설정을 상속받을지 여부를 설정하는 요소이다.

logback-spring.xml 작성해보기

ConsoleAppender로 설정해 <appender>를 작성한다.

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">    <!-- ConsoleAppender == 콘솔에 로그 찍음 -->
    <encoder>
        <pattern>
            %d{yyyy-MM-dd HH:mm:ss.SSS} %magenta([%thread]) %-5level %logger{36}.%M - %msg%n
        </pattern>
    </encoder>
</appender>

<root>에 위에서 작성한 appender를 <appender-ref>로 등록한다.
ref속성에는 appender의 name을 입력하면 된다.

<root level="INFO">
    <appender-ref ref="STDOUT" />
</root>