[java] Log4j의 로깅 메소드 로그를 파일 형식으로 회전하는 방법

Log4j는 자바 애플리케이션의 로깅을 쉽게 관리하기 위한 강력한 라이브러리입니다. 이 라이브러리를 사용하여 로그를 파일 형식으로 회전하는 방법을 알아보겠습니다.

1. Log4j 설정 파일 생성

먼저, Log4j 설정 파일을 생성해야 합니다. 일반적으로 log4j.properties 또는 log4j.xml과 같은 이름으로 파일을 만듭니다.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <RollingFile name="fileLogger" fileName="logs/application.log" filePattern="logs/application-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="fileLogger" />
        </Root>
    </Loggers>
</Configuration>

위의 예제는 XML 형식의 Log4j 설정 파일입니다. fileLogger라는 이름의 롤링 파일(Appender)을 정의하였습니다. fileName 속성은 로그 파일의 경로와 이름을, filePattern 속성은 롤링 파일의 패턴을 설정합니다. 날짜와 색인(%d{MM-dd-yyyy}-%i)을 지정하여 일별로 분리된 로그 파일을 생성하고, 파일 크기가 10MB를 초과하면 롤링 파일을 생성합니다.

2. Log4j 설정 파일과 로깅 코드 연결

Log4j 설정 파일을 작성한 후, Java 애플리케이션에서 해당 설정 파일을 로딩하여 사용해야 합니다. 아래의 코드를 참고하여 설정 파일을 로딩하는 방법을 알아보세요.

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

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

    public static void main(String[] args) {
        // Log4j 설정 파일을 로딩
        System.setProperty("log4j.configurationFile", "path/to/log4j.xml");

        // 로그 메시지 출력
        logger.info("Hello, Log4j!");
    }
}

LogManager.getLogger() 메소드를 사용하여 Logger 객체를 생성합니다. 이때, 전체 클래스의 이름(패키지 포함)을 인자로 넘겨줍니다. System.setProperty() 메소드를 이용하여 Log4j 설정 파일의 경로를 지정합니다. 로그 메시지를 출력할 때는 생성된 Logger 객체의 메소드를 사용합니다.

3. 로그 파일 확인

위와 같이 설정 및 코드를 작성하고 애플리케이션을 실행하면, logs 디렉토리 내에 일별로 분리된 로그 파일이 생성됩니다. 각 로그 파일의 이름은 날짜와 색인을 포함하고 있으며, 최대 10개의 파일만 유지되도록 설정되어 있습니다. 파일 크기가 10MB를 초과하면 자동으로 새로운 롤링 파일이 생성됩니다.

참고 자료