[java] Log4j의 로그 회전 옵션 설정 방법

로그는 애플리케이션에서 발생하는 중요한 정보를 추적하고 기록하는 데 사용됩니다. Log4j는 Java 애플리케이션에서 로그를 관리하고 출력하는 데 널리 사용되는 강력한 로깅 라이브러리입니다. 로그 파일의 크기가 계속해서 증가하면 디스크 공간을 낭비하게 되므로 로그 파일의 크기를 제한하고 주기적으로 로그 파일을 백업하는 것이 중요합니다. 이를 위해 Log4j는 로그 회전 기능을 제공합니다.

로그 회전은 특정 크기에 도달하거나 특정 기간이 지난 후에 로그 파일을 백업하고 새로운 로그 파일을 생성하는 프로세스입니다. 이를 통해 로그 파일의 크기를 제한하고 관리할 수 있습니다. Log4j에서는 RollingFileAppender를 사용하여 로그 회전을 구성할 수 있습니다.

Log4j RollingFileAppender 구성

RollingFileAppender는 Log4j에서 파일로 로그를 기록하는 데 사용되는 Appender입니다. 아래의 예제 코드에서는 RollingFileAppender를 사용하여 로그 파일 회전을 구성하는 방법을 보여줍니다.

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.core.appender.rolling.RollingFileAppender;
import org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy;
import org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.layout.PatternLayout;

public class LogRotationExample {

    private static final Logger logger = LogManager.getLogger(LogRotationExample.class);

    public static void main(String[] args) {
        // 로그 파일 위치 및 이름
        String logFilePath = "/path/to/log/file.log";

        // 로그 파일 회전 설정
        Configuration configuration = Configurator.initialize("Example", "log4j2.xml");
        RollingFileAppender appender = RollingFileAppender.newBuilder()
                .withFileName(logFilePath)
                .withFilePattern(logFilePath + ".%d{yyyy-MM-dd}")
                .withPolicy(SizeBasedTriggeringPolicy.createPolicy("10MB"))
                .withPolicy(TimeBasedTriggeringPolicy.createPolicy("1", null))
                .withLayout(PatternLayout.newBuilder().withPattern("%d [%t] %-5level %logger{36} - %msg%n").build())
                .setName("RollingFile")
                .build();

        appender.start();
        ((org.apache.logging.log4j.core.Logger) logger).addAppender(appender);
        logger.setLevel(Level.ALL);

        // 로그 기록 예시
        logger.info("This is an example log message.");
    }
}

위의 코드에서는 log4j2.xml을 초기화하여 Log4j 구성을 설정합니다. RollingFileAppender.newBuilder()를 사용하여 회전 파일 앱 환경을 생성하고 필요한 설정을 추가합니다.

마지막으로, logger에 앱 환경을 추가하고 로그 레벨을 설정합니다. 위의 예제에서는 Level.ALL을 사용하여 모든 로그 레벨을 출력하도록 설정하였습니다.

이제 Log4j를 사용하여 로그를 기록하고 회전하는 방법을 알았습니다. 로그 회전 기능을 활성화하여 로그 파일의 크기를 유지하고 디스크 공간을 효율적으로 관리할 수 있습니다.

참고 자료