[java] SLF4J를 사용하여 로깅 설정하기

SLF4J(Simple Logging Facade for Java)는 Java 애플리케이션의 로깅을 추상화하여 다양한 로깅 시스템에 대한 통합을 제공하는 Java 라이브러리입니다. 이 라이브러리를 사용하면 애플리케이션의 로깅 코드를 변경하지 않고도 로깅 시스템을 유연하게 전환할 수 있습니다.

SLF4J 의존성 추가하기

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

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.32</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.32</version>
    </dependency>
</dependencies>

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

dependencies {
    implementation 'org.slf4j:slf4j-api:1.7.32'
    implementation 'org.slf4j:slf4j-simple:1.7.32'
}

로거 설정하기

SLF4J의 가장 간단한 구현체인 slf4j-simple을 사용하여 로깅을 설정할 수 있습니다. slf4j-simple은 간단하고 직관적인 로깅을 제공하는데, 개발 및 테스트 목적으로 사용하기에 적합합니다.

먼저, src/main/resources 디렉토리에 simplelogger.properties 파일을 생성하고 다음 내용을 추가합니다.

# 로그 레벨 설정: trace, debug, info, warn, error
org.slf4j.simpleLogger.defaultLogLevel=info

# 로그 포맷 설정: default 또는 brief
org.slf4j.simpleLogger.showThreadName=true
org.slf4j.simpleLogger.showDateTime=true
org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS

# 로그 출력 장치 설정: system.out 또는 file
org.slf4j.simpleLogger.logFile=System.out

위의 설정은 로그 레벨을 info로, 로그 포맷을 날짜와 시간이 포함된 형식으로, 로그를 System.out에 출력하도록 지정합니다.

로깅 코드 작성하기

이제 SLF4J를 사용하여 로깅 코드를 작성할 수 있습니다. 예를 들어, 다음과 같이 로그 메시지를 출력하는 코드를 작성해봅시다.

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

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

    public static void main(String[] args) {
        logger.info("안녕하세요, SLF4J 로깅 예제입니다.");
        logger.debug("디버그 메시지입니다.");
        logger.warn("경고 메시지입니다.");
        logger.error("에러 메시지입니다.");
    }
}

위의 코드에서는 LoggerFactory.getLogger() 메서드를 사용하여 로거를 생성하고, 생성한 로거를 통해 다양한 로그 메시지를 출력하고 있습니다.

로그 확인하기

애플리케이션을 실행한 후 로그를 확인해보면, 지정한 로그 레벨에 따라 출력되는 로그 메시지를 확인할 수 있습니다. 예를 들어, 위의 예제에서는 info 레벨로 설정했으므로 info, warn, error 레벨의 로그 메시지만 출력될 것입니다.

SLF4J를 사용하면 다른 로깅 시스템으로의 전환도 간단하게 할 수 있습니다. SLF4J에는 Logback, Log4j, java.util.logging과 같은 다양한 로깅 시스템과의 통합 라이브러리도 제공됩니다.

더 자세한 내용은 SLF4J 공식 문서를 참고하시기 바랍니다.