[java] Log4j의 로깅 레벨 설정 방법

Log4j는 자바 애플리케이션의 로깅을 관리하기 위해 널리 사용되는 프레임워크입니다. 로깅 레벨은 로그 이벤트의 중요도를 결정하는 데 사용됩니다. 여러 가지 로그 레벨이 있으며, 이러한 레벨을 설정하여 애플리케이션의 로그 출력을 제어할 수 있습니다.

기본 로그 레벨

Log4j에는 다섯 가지 기본 로그 레벨이 있습니다. 각 레벨은 중요도에 따라 다음과 같이 설정됩니다.

로그 레벨 설정 방법

Log4j의 로그 레벨은 XML 또는 프로퍼티 파일을 사용하여 설정할 수 있습니다. 예를 들어, XML 파일을 사용하여 로그 레벨을 설정하는 방법은 다음과 같습니다.

<!-- log4j2.xml 파일 -->
<Configuration status="WARN">
  <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="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

위의 예제에서는 루트 로거의 레벨을 info로 설정하고 있습니다. 따라서 해당 레벨보다 중요한 error 이벤트만 로그로 출력됩니다.

동적 로그 레벨 변경

Log4j를 사용하면 프로그램 실행 중에 동적으로 로그 레벨을 변경할 수도 있습니다. 이는 애플리케이션의 실행 환경에 따라 로그 출력을 조절하는 데 유용합니다. 다음은 Log4j를 사용하여 로그 레벨을 동적으로 변경하는 예제 코드입니다.

import org.apache.logging.log4j.core.config.Configurator;

public class LogLevelExample {
    private static final org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger(LogLevelExample.class);

    public static void main(String[] args) {
        logger.info("This is an info message.");
        logger.error("This is an error message.");

        // 로그 레벨을 동적으로 변경
        Configurator.setLevel(LogLevelExample.class.getName(), org.apache.logging.log4j.Level.DEBUG);

        logger.debug("This is a debug message.");
    }
}

위의 예제에서는 먼저 infoerror 로그를 출력한 후, setLevel() 메서드를 사용하여 로그 레벨을 DEBUG로 변경합니다. 이렇게 하면 debug 로그도 출력됩니다.

결론

Log4j를 사용하여 로깅 레벨을 설정하는 방법에 대해 알아보았습니다. 애플리케이션의 실행 환경에 맞게 로그 레벨을 설정하고, 필요에 따라 동적으로 변경하여 로그 출력을 제어할 수 있습니다. 더 자세한 내용은 Log4j 공식 문서를 참조하시기 바랍니다.