티스토리 뷰

지금까지 자바 어플리케이션 기반과 웹 어플리케이션 기반에서 Log4j2를 사용하는 방법에 대해서 간단히 알아봤다.

이제 추가적으로 알아 볼 것은 로깅 관련 설정 파일이 변경되었을 때 자바 어플리케이션 혹은 서블릿 컨테이너를 재시작하지 않고 인식시키는 방법이다.


기존 Log4j 1.x 버전의 경우 이 기능을 공식적으로 지원하지 않았다. 물론 이를 구현하기 위한 많은 방법들이 제공되고 있고 Log4j 자체를 확장시켜서 처리하는 방법도 있지만 모두 공식적인 방법은 아니다.


Log4j 2.x 버전 부터는 자동으로 설정 파일 변경시 인식하는 기능을 제공한다. 다음은 예제이다.


<소스1> log4j2.xml


<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="WARN" monitorInterval="30">

  <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="trace">

      <AppenderRef ref="Console"/>

    </Root>

  </Loggers>

</Configuration>



위의 예제에서 Log4j의 Root 태그인 <Configuration>에 monitorInterval 속성을 추가하면 Log4j가 주기적으로 파일의 변경 여부를 확인해서 리로딩 작업을 수행한다.


여기서 사용하능 예제인 monitorInterval="30"은 30분 간격으로 변경을 확인하겠다는 의미이며 단위는 분 단위를 사용한다.


== 참고 ==========================================================================

1. Practical 자바 유틸리티, 인사이트 장윤기 (2016) 책의 내용을 보완하기 위한 용도로 작성한 문서이다.

2. 책에 지면 관계상 넣지 않은 부분, 추가 기능 설명이 필요한 부분을 중심으로 기술하였다.

================================================================================