[java] SLF4J에서 동적 로깅 설정하기

SLF4J는 자바 애플리케이션에서 로깅을 관리하는 데 도움이 되는 유용한 도구입니다. SLF4J에서 로깅 레벨을 동적으로 설정하면, 애플리케이션의 실행 시간에 따라 로그를 더 세밀하게 관리할 수 있습니다. 이번 포스트에서는 SLF4J에서 동적 로깅 설정을 어떻게 할 수 있는지 알아보겠습니다.

1. 의존성 추가

우선 SLF4J를 사용하기 위해 프로젝트의 의존성에 SLF4J 라이브러리를 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.30</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.30</version>
    </dependency>
</dependencies>

Gradle을 사용하는 경우 build.gradle 파일에 다음과 같이 의존성을 추가합니다.

dependencies {
    implementation 'org.slf4j:slf4j-api:1.7.30'
    implementation 'org.slf4j:slf4j-log4j12:1.7.30'
}

2. log4j.properties 파일 생성

동적 로깅 설정을 하기 위해서는 log4j.properties 파일을 프로젝트에 추가해야 합니다. 이 파일은 로깅에 대한 설정을 포함하고 있으며, 클래스 패스에 위치해야 합니다. 프로젝트의 리소스 디렉토리에 log4j.properties 파일을 생성하고 다음과 같이 설정합니다.

log4j.rootLogger=${root.logger}
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.logger.org.example=DEBUG, stdout

위 설정에서 log4j.logger.org.example 부분은 로그 레벨 설정을 담당합니다. org.example 패키지에 있는 클래스들의 로깅 레벨을 DEBUG로 설정한 예시입니다. 필요에 따라 해당 패키지를 자신의 프로젝트 패키지로 변경해야 합니다.

3. 동적 로깅 설정하기

이제 SLF4J를 사용하여 동적으로 로깅 레벨을 설정해보겠습니다. 다음은 SLF4J에서 로그 레벨을 동적으로 설정하는 예시 코드입니다.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

    public static void main(String[] args) {
        logger.debug("Debug log message");
        logger.info("Info log message");
        logger.warn("Warning log message");
        logger.error("Error log message");
    }
}

위의 예시 코드에서는 ExampleClass에 대한 로거를 생성하고 있으며, 로그 메시지를 출력하고 있습니다. 이 코드를 실행하면 로그 레벨에 따라 로그 메시지가 출력됩니다.

결론

이제 SLF4J에서 동적 로깅 설정을 하는 방법을 알아보았습니다. 동적 로깅 설정은 애플리케이션의 실행 시간에 따라 로그를 조절할 수 있어 유용합니다. SLF4J를 사용하여 로깅을 효율적으로 관리하고 디버깅 작업을 보다 용이하게 수행할 수 있습니다. 자세한 사항은 SLF4J 공식 문서를 참고하세요.