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

Log4j는 Java 애플리케이션에서 로깅을 수행하기 위한 강력한 라이브러리입니다. 로그 필터는 로그 이벤트를 받아서 특정 조건을 만족하는 경우에만 로그를 출력하도록 필터링하는 기능을 제공합니다. 이 글에서는 Log4j의 로그 필터를 사용하여 특정 예외를 무시하는 방법을 알아보겠습니다.

로그 필터 설정하기

먼저, Log4j XML 설정 파일에 로그 필터를 추가해야 합니다. 아래는 Log4j XML 설정 파일의 일부 예시입니다.

<Configuration>
  <!-- 로그 출력을 위한 Appender 설정 -->
  <Appenders>
    <Console name="console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  
  <!-- 로그 필터 설정 -->
  <Filters>
    <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
    <!-- 여기에 필터를 추가 -->
  </Filters>
  
  <!-- 로그 출력을 위한 Logger 설정 -->
  <Loggers>
    <Root level="DEBUG">
      <AppenderRef ref="console"/>
    </Root>
  </Loggers>
</Configuration>

특정 예외 무시 처리 필터 추가하기

예를 들어, “MyException”이라는 특정 예외를 무시하고 싶다고 가정해봅시다. 이를 위해 아래의 필터를 Log4j XML 설정 파일의 <Filters> 섹션에 추가합니다.

<!-- 특정 예외 무시 처리 필터 -->
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL">
  <MarkerFilter marker="IGNORE_MY_EXCEPTION" onMatch="DENY" onMismatch="NEUTRAL"/>
</ThresholdFilter>

위 필터는 먼저 ERROR 레벨의 로그를 거부하는 역할을 수행합니다. 그리고 “IGNORE_MY_EXCEPTION” 마커를 가진 로그 이벤트는 거부하여 출력되지 않습니다.

로그에 특정 예외 마커 추가하기

이제 특정 예외를 무시하기 위해 “MyException” 클래스에서 해당 예외 마커를 추가해주어야 합니다. 아래는 예시 코드입니다.

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

public class MyException extends Exception {
  private static final Logger logger = LogManager.getLogger(MyException.class);
  private static final Marker IGNORE_MY_EXCEPTION = MarkerManager.getMarker("IGNORE_MY_EXCEPTION");
  
  public void doSomething() {
    // 예외 발생 시 로그 출력
    logger.error(IGNORE_MY_EXCEPTION, "MyException occurred!");
  }
}

위의 예시 코드에서 IGNORE_MY_EXCEPTION 마커를 사용하여 logger.error() 메서드를 호출하면 해당 로그 이벤트는 거부 및 출력되지 않습니다.

마치며

Log4j의 로그 필터를 사용하여 특정 예외를 무시하는 방법에 대해 알아보았습니다. 예외 마커를 사용하여 로그 필터와 연동함으로써 특정 예외의 로그를 제어할 수 있습니다. Log4j의 다양한 기능과 설정에 대해 더 자세히 알아보고 참고할 수 있는 공식 문서를 참조하시기 바랍니다.