[java] Log4j의 로깅 메소드 appender 설정 방법

Log4j는 자바 어플리케이션의 로그 출력을 관리하고 조정하는 데 사용되는 인기있는 로깅 라이브러리입니다. Log4j의 appender는 로그 이벤트를 특정 대상으로 전송하는 방법을 설정하는데 사용됩니다. 이 포스트에서는 Log4j의 로깅 메소드 appender를 설정하는 방법에 대해 알아보겠습니다.

1. Log4j 의존성 추가

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

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

Gradle 프로젝트를 사용하는 경우, build.gradle 파일에 다음 의존성을 추가해야 합니다.

implementation 'org.apache.logging.log4j:log4j-core:2.14.1'

위의 의존성을 추가하여 Log4j를 프로젝트에 포함시킵니다.

2. log4j2.xml 파일 생성

Log4j의 설정은 보통 log4j2.xml 파일에 작성됩니다. 프로젝트의 리소스 디렉토리에 log4j2.xml 파일을 생성하고 아래와 같이 appender를 설정합니다.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

위의 설정에서는 Console appender를 설정하였습니다. Console appender는 로그 메시지를 표준 출력(System.out)으로 전송합니다. 로그의 출력 형식은 PatternLayout으로 설정되어 있으며, 위의 예제에서는 시간(%d{HH:mm:ss.SSS}), 스레드([%t]), 로그 레벨(%-5level), 로거 이름(%logger{36}) 및 메시지(%msg%n)가 포함됩니다.

3. 로그 사용하기

Log4j의 로깅 메소드를 사용하려면 로그를 사용하는 클래스에서 Log4j의 Logger를 가져와야 합니다. 아래는 로그를 출력하는 예제 코드입니다.

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

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

    public static void main(String[] args) {
        logger.debug("Debug 로그 메시지");
        logger.info("Info 로그 메시지");
        logger.warn("Warn 로그 메시지");
        logger.error("Error 로그 메시지");
    }
}

위의 예제에서는 Log4j의 LogManager 클래스를 사용하여 Logger를 가져옵니다. Logger는 getLogger 메소드에 클래스 이름을 전달하여 가져올 수 있습니다. 그런 다음, debug, info, warn, error 메소드를 사용하여 각각 해당 로그 레벨에 맞는 로그 메시지를 출력합니다.

참고 자료

위의 방법을 이용하여 Log4j의 로깅 메소드 appender를 설정할 수 있습니다. Log4j를 사용하면 로그를 쉽게 관리하고 원하는 대상으로 출력할 수 있습니다.