logback

mjjin·2023년 9월 21일
1

Logback

logback이란
SLF4J라는 인터페이스를 구현하는 구현체로
Logging Framework이다.

@SLF4J라는 어노테이션을 사용한다.

Appender 종류

  • ConsoleAppender
    : 콘솔에 log를 출력

  • FileAppender
    : 파일 단위로 log를 저장

  • RollingFileAppender
    : log를 여러 파일로 나누어 저장

  • SMTPAppender
    : log를 메일로 전송하여 기록

  • DBAppender
    : log를 DB에 저장

LOG LEVEL

DEBUG < INFO < WARN < ERROR

로그설정하기

logback-spring.xml

패키지 내부의 resources 패키지 밑에 logback-spring.xml 파일을 생성한다.

  • 기본 설정하기
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

현재 로그의 레벨은 info로 설정해둔 상태이다.
<root level="INFO">의 부분을 "DEBUG" 등으로 바꾸어
레벨을 변경하여 출력할 수 있다.

로그 파일에 로그 기록하기

로그를 콘솔에만 출력시, 로그의 가독성도 떨어질 뿐 더러
기록이 남지 않기 때문에 이후에 확인하기 어렵다는 단점이 있다.

로그들의 기록을 파일로 남겨두면 이후 로그추적이 조금 더 수월해 질 수 있다.

이 때, 로그를 파일에 저장할 때에는 gitignore에 log 파일을 추가해두어야 한다.

gitignore 예시 : *.log

이전에 만들어 두었던 logback-spring.xml파일에 FileAppender를 추가한다.

  • FileAppender
    <!-- File appender -->
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/ali.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

해당 설정은 기본적인 설정으로, logs/ali.log에 로그를 기록한다.
만약, 파일 저장 위치를 변경하고 싶다면 <file>logs/ali.log</file> 부분을
수정해주면 된다.

  • 옵션 (ROLLING_FILE)
    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/myapp.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/ali.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

해당 ROLLING 옵션은 매일 새로운 로그 파일을 생성하고, 최대 30일 동안의 로그 파일을
보관하는 설정으로 되어있다.

필요에 따라 'FileAppender'와 'ROLLING_FILE' 둘 중 하나를 선택해
사용할 수 있고,
일 단위로 로그를 저장하는게 로그 추적하기가 조금 더 수월해보여
ROLLING_FILE 옵션으로 설정하려고 한다.

- 추가한 뒤 전체코드

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/ali.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/ali.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="ROLLING_FILE" />
    </root>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

로그 파일은

해당 위치에 저장된다.

rollingPlicy 옵션은 이외에도 파일 사이즈 설정 등이 추가로 있으니
관심이 있다면 추가적으로 설정해두어도 좋을 것 같다.

0개의 댓글