[java] Log4j의 복수 개의 로그 파일 설정

Log4j는 Java 어플리케이션의 로그를 다양한 형식으로 기록할 수 있는 강력한 로깅 라이브러리입니다. 이를 통해 여러 가지 로그 파일을 생성하고 관리할 수 있습니다. 이번 포스트에서는 Log4j를 사용하여 복수 개의 로그 파일을 설정하는 방법에 대해 다루겠습니다.

1. Log4j 의존성 추가

먼저, 프로젝트의 Maven 또는 Gradle 의존성에 Log4j를 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음 의존성을 추가합니다:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.x.x</version>
</dependency>

Gradle을 사용하는 경우 build.gradle 파일에 다음 의존성을 추가합니다:

dependencies {
    implementation 'org.apache.logging.log4j:log4j-core:2.x.x'
}

버전 번호는 사용하고 있는 Log4j 버전에 따라 변경해야 합니다.

2. Log4j 설정 파일 생성

Log4j를 사용하기 위해 설정 파일을 작성해야 합니다. 이 설정 파일에는 로그 파일 이름, 로그 레벨 및 로그 형식과 관련된 다양한 설정을 지정할 수 있습니다. 일반적으로 log4j2.xml 또는 log4j2.properties라는 이름으로 파일을 생성하고 프로젝트의 리소스 폴더에 저장합니다.

log4j2.xml 예제

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        
        <File name="FileAppender1" fileName="logs/app1.log">
            <PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n" />
        </File>
        
        <File name="FileAppender2" fileName="logs/app2.log">
            <PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n" />
        </File>
    </Appenders>
    
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="FileAppender1" />
            <AppenderRef ref="FileAppender2" />
        </Root>
    </Loggers>
</Configuration>

위의 예제에서는 세 개의 Appender를 정의했습니다: Console, FileAppender1, FileAppender2. Console Appender는 표준 출력으로 로그를 출력하며, FileAppender1FileAppender2는 각각 app1.logapp2.log라는 파일에 로그를 저장합니다. PatternLayout을 사용하여 로그 형식을 지정할 수 있습니다.

3. Log4j 설정 적용

Log4j 설정 파일을 작성했다면, 어플리케이션 코드에서 설정을 적용해야 합니다. 보통 어플리케이션의 진입점에 다음 코드를 추가합니다:

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/log4j2.xml");
        
        // 로그 사용 예시
        logger.info("Hello, Log4j!");
    }
}

위의 코드에서 System.setProperty("log4j.configurationFile", "path/to/log4j2.xml") 같은 방식으로 Log4j 설정 파일의 경로를 지정합니다.

결론

Log4j를 사용하여 복수 개의 로그 파일을 설정하는 방법을 살펴보았습니다. Log4j를 사용하면 로그 파일의 생성과 관리를 용이하게 할 수 있으며, 필요한 경우 로그 형식도 유연하게 조정할 수 있습니다. 자세한 내용은 Apache Log4j 공식 문서를 참조하시기 바랍니다.