[java] Log4j의 프로그래밍적인 설정

Log4j는 Java 애플리케이션에서 로그를 관리하기 위한 강력한 도구입니다. 로깅은 애플리케이션의 동작을 추적하고 디버깅하는 데 매우 유용합니다. 이번 블로그 포스트에서는 Log4j를 사용하여 Java 애플리케이션에 로그를 설정하는 방법을 살펴보겠습니다.

1. Log4j 라이브러리 추가하기

먼저, Log4j를 사용하기 위해 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 아래의 종속성을 추가하세요.

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

Gradle을 사용하는 경우 build.gradle 파일에 아래의 의존성을 추가하세요.

implementation 'log4j:log4j:1.2.17'

2. Log4j 설정 파일 만들기

Log4j는 XML 또는 properties 파일을 사용하여 로그 설정을 정의할 수 있습니다. 프로젝트의 src/main/resources 디렉토리에 log4j.xml 또는 log4j.properties 파일을 만들고 다음과 같이 설정하세요.

log4j.xml 예시:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!-- Appenders -->
    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %c{1} - %m%n" />
        </layout>
    </appender>

    <!-- Root Logger -->
    <root>
        <priority value="info" />
        <appender-ref ref="consoleAppender" />
    </root>

</log4j:configuration>

log4j.properties 예시:

log4j.rootLogger=INFO, consoleAppender

# Appenders
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.Target=System.out
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-5p %c{1} - %m%n

위의 설정에서는 consoleAppender라는 이름의 Appender를 생성하고, 로그 메시지를 콘솔에 출력하도록 지정했습니다.

3. 로그 사용하기

이제 Log4j가 설정되었으므로 Java 코드에서 로그를 사용할 수 있습니다. 사용하려는 클래스에서 org.apache.log4j.Logger를 import하고, Logger 인스턴스를 생성합니다.

import org.apache.log4j.Logger;

public class MyClass {
    private static final Logger logger = Logger.getLogger(MyClass.class);
    
    public void doSomething() {
        logger.info("Something happened.");
    }
}

위의 예시에서는 MyClass 클래스에서 로그를 사용하는 방법을 보여줍니다. logger.info(“Something happened.”)으로 로그 메시지를 출력할 수 있습니다.

4. 로그 레벨 설정

Log4j는 다양한 로그 레벨을 제공합니다. 가장 일반적인 로그 레벨은 TRACE, DEBUG, INFO, WARN, ERROR, FATAL 입니다. Log4j 설정 파일에서 로그 레벨을 조정하여 원하는 로그 메시지만 보거나 숨길 수 있습니다.

예를 들어, 다음과 같이 설정하면 INFO 레벨보다 높은 레벨(DEBUG, TRACE)의 로그를 출력하지 않습니다.

<root>
    <priority value="INFO" />
    <appender-ref ref="consoleAppender" />
</root>

로깅은 애플리케이션 개발과 유지보수에 매우 중요합니다. Log4j를 사용하여 쉽게 로그를 관리할 수 있습니다. 이제 Log4j를 사용하여 자바 애플리케이션에 로그를 설정할 수 있는 기본적인 방법을 알게 되었습니다. 로깅에 대해 더 자세히 알고 싶다면 공식 Log4j 문서를 참조하세요.

참조