[java] Log4j의 로그 필터에서 예외 처리 방법

Log4j는 자바 애플리케이션에서 로깅을 관리하기 위해 사용되는 강력한 라이브러리입니다. 로깅은 애플리케이션의 디버깅과 모니터링에 도움이 되며 예외 처리에도 중요한 역할을 합니다. Log4j의 로그 필터를 사용하여 예외 처리를 어떻게 할 수 있는지 알아보겠습니다.

로그 필터란?

로그 필터는 동일한 로그 메시지에 대한 필터링을 제공하여 특정 조건을 만족하는 로그만 출력하도록 설정할 수 있습니다. Log4j는 다양한 유형의 필터를 제공하며 사용자 정의 필터도 작성할 수 있습니다.

예외 처리 로그 필터

일반적으로 로그는 애플리케이션에서 발생한 예외에 대한 정보를 담고 있습니다. 예외 처리 로그 필터를 사용하면 특정 유형의 예외에 대한 로그만 필터링하여 출력할 수 있습니다.

아래의 예제 코드에서는 Log4j의 예외 처리 로그 필터를 사용하는 방법을 보여줍니다.

import org.apache.log4j.Logger;

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

    public void doSomething() {
        try {
            // 예외가 발생할 수 있는 작업 수행
        } catch (Exception e) {
            logger.error("예외 발생: " + e.getMessage(), e);
        }
    }
}

위의 코드에서 Logger 클래스를 사용하여 로그를 출력하고 있습니다. logger.error 메서드를 사용하여 예외 정보와 함께 에러 메시지를 로그로 기록하고 있습니다.

예외 필터링 설정

예외 처리 로그 필터를 설정하려면 Log4j의 설정 파일을 수정해야 합니다. 보통 log4j.properties 또는 log4j.xml 파일을 사용하여 설정을 관리합니다. 예외 필터를 설정하는 방법은 다음과 같습니다.

log4j.properties 파일 사용하는 경우:

log4j.rootLogger=DEBUG, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.logger.ErrorLogger=ERROR, exampleFilter

log4j.appender.exampleFilter=org.apache.log4j.RollingFileAppender
log4j.appender.exampleFilter.layout=org.apache.log4j.PatternLayout
log4j.appender.exampleFilter.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.appender.exampleFilter.File=example.log
log4j.appender.exampleFilter.Append=true
log4j.appender.exampleFilter.filter=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.exampleFilter.filter.LevelMin=ERROR
log4j.appender.exampleFilter.filter.LevelMax=ERROR
log4j.appender.exampleFilter.filter.AcceptOnMatch=true

log4j.xml 파일 사용하는 경우:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
        </layout>
    </appender>

    <logger name="ErrorLogger">
        <level value="ERROR" />
        <appender-ref ref="exampleFilter" />
    </logger>

    <appender name="exampleFilter" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="example.log" />
        <param name="Append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="ERROR" />
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>
</log4j:configuration>

위의 코드에서 exampleFilter라는 필터를 생성하고, LevelRangeFilter를 사용하여 필터의 최소 및 최대 레벨을 ERROR로 설정하고 있습니다. 이 설정을 통해 ERROR 레벨의 로그만 example.log 파일에 기록하게 됩니다.

이와 같이 Log4j의 로그 필터를 사용하여 예외 처리를 자세히 모니터링할 수 있습니다.

참고 자료