[java] SLF4J에서 로그 메시지 방출하기

SLF4J(Simple Logging Facade for Java)는 Java 애플리케이션에서 로깅을 위한 인터페이스를 제공하는 로깅 프레임워크입니다. 이번 블로그 포스트에서는 SLF4J를 사용하여 로그 메시지를 방출하는 방법에 대해 알아보겠습니다.

SLF4J 의존성 추가하기

먼저, SLF4J를 사용하기 위해 프로젝트의 의존성에 SLF4J와 로깅 구현체인 logback을 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가해주세요.

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.32</version>
    </dependency>
    
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.6</version>
    </dependency>
</dependencies>

Gradle을 사용하는 경우, build.gradle 파일에 다음 의존성을 추가해주세요.

dependencies {
    implementation 'org.slf4j:slf4j-api:1.7.32'
    implementation 'ch.qos.logback:logback-classic:1.2.6'
}

의존성을 추가한 이후에는 SLF4J를 사용할 준비가 되었습니다.

로그 메시지 방출하기

SLF4J를 사용하여 로그 메시지를 방출하려면 로깅하는 클래스에서 SLF4J의 Logger 인터페이스를 사용해야 합니다. 다음은 SLF4J를 사용하여 로그 메시지를 방출하는 간단한 예제입니다.

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

public class MyLoggerExample {
    private static final Logger logger = LoggerFactory.getLogger(MyLoggerExample.class);
    
    public static void main(String[] args) {
        logger.debug("Debug 메시지");
        logger.info("Info 메시지");
        logger.warn("Warn 메시지");
        logger.error("Error 메시지");
    }
}

위의 예제에서는 LoggerFactory 클래스의 getLogger() 메서드를 사용하여 Logger 인스턴스를 가져오고, 로그 메시지를 출력할 수 있습니다. debug(), info(), warn(), error() 메서드를 사용하여 로그 레벨에 따라 메시지를 출력할 수 있습니다.

로그 레벨 설정하기

SLF4J에서는 로그 레벨을 설정하여 어떤 레벨의 로그 메시지를 출력할지 결정할 수 있습니다. 로그 레벨은 trace, debug, info, warn, error 순으로 낮은 순위에서 높은 순위로 정의됩니다. 기본적으로는 info 레벨 이상의 로그 메시지만 출력됩니다.

로그 레벨을 설정하려면 logback.xml 파일을 프로젝트의 classpath에 추가하고, 원하는 로그 레벨을 설정해야 합니다. 다음은 logback.xml 파일의 예제입니다.

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

위의 예제에서는 root 요소의 level 속성을 debug로 설정하여 debug 레벨 이상의 모든 로그 메시지가 출력되도록 설정했습니다. 필요에 따라 로그 레벨을 원하는 대로 수정하여 사용할 수 있습니다.

결론

SLF4J를 사용하여 로그 메시지를 방출하는 방법에 대해 살펴보았습니다. SLF4J를 사용하면 로깅 코드를 표준화하고, 다양한 로깅 구현체를 자유롭게 변경할 수 있습니다.

더 자세한 내용은 SLF4J 공식 문서를 참조하십시오.