[java] SLF4J에서 로그 로테이션 설정하기

SLF4J는 Java 어플리케이션에서 로깅을 위한 인터페이스를 제공하는 라이브러리입니다. 로깅은 어플리케이션의 디버깅, 문제 해결, 성능 분석 등에 유용한 정보를 제공하기 때문에 중요합니다. 로그 파일이 계속해서 커지면 디스크 공간을 차지하고 성능도 저하될 수 있으므로 로그 로테이션 설정은 필수입니다.

일반적으로 SLF4J를 사용하는 경우, 로깅 프레임워크로는 Logback, Log4j 등을 사용합니다. 이 로깅 프레임워크에는 로그 로테이션을 지원하는 기능이 내장되어 있습니다. 이번에는 SLF4J 및 Logback을 사용하여 로그 로테이션을 설정하는 방법을 알아보겠습니다.

Logback 설정 파일 생성하기

첫 번째로, Logback 설정 파일을 생성해야 합니다. Logback은 logback.xml 또는 logback.groovy라는 이름의 파일을 읽어와 설정을 적용합니다. logback.xml 파일을 생성하고 다음과 같은 내용을 추가해주세요.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/path/to/log/file.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/path/to/log/file-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%date %-5level [%logger] - %message%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="FILE" />
    </root>
</configuration>

위의 설정 파일에서 주목해야 할 부분은 RollingFileAppenderTimeBasedRollingPolicy입니다. RollingFileAppender는 로그 파일을 생성하고 지정된 크기 또는 시간에 따라 롤링하는 데 사용됩니다. TimeBasedRollingPolicy는 날짜 패턴별로 새로운 로그 파일을 생성합니다.

위의 설정 파일에서는 /path/to/log/file.log 경로에 있는 로그 파일을 생성하며, 날짜 패턴별로 /path/to/log/file-yyyy-MM-dd.log 형식으로 새로운 로그 파일을 생성합니다. 로그 파일은 날짜별로 롤링되며, 로그 레벨, 로거 이름, 메시지 등의 형식으로 로그를 기록합니다.

SLF4J와 Logback 설정하기

이제 설정 파일을 생성했으므로, SLF4J와 Logback을 사용하는 Java 어플리케이션에서 설정을 적용해야 합니다. 다음은 간단한 예제입니다.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyApp {
    private static final Logger logger = LoggerFactory.getLogger(MyApp.class);

    public static void main(String[] args) {
        logger.info("Hello, SLF4J!");
    }
}

위의 예제에서는 SLF4J를 통해 Logger 인스턴스를 가져오고, Logger를 사용하여 로그 메시지를 출력합니다. 설정 파일에서 정의한 로그 레벨에 따라 로그가 기록됩니다.

참고 자료