[java] SLF4J와 Log4j2의 SLF4J 바인딩 사용하기

개요

SLF4J (Simple Logging Facade for Java)는 자바 어플리케이션에서 로깅을 위한 간단한 인터페이스를 제공하는 라이브러리입니다. 이를 이용하여 로깅에 대한 추상화를 할 수 있으며, 실제 로깅 구현체로 Log4j2와 같은 다른 로깅 프레임워크를 사용할 수 있습니다.

이 글에서는 SLF4J와 Log4j2를 함께 사용하여 로깅을 설정하는 방법에 대해 알아보겠습니다.

SLF4J 및 Log4j2 의존성 추가

먼저, Maven 프로젝트를 사용한다면 pom.xml 파일에 아래의 의존성을 추가해줍니다.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.x</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.x.x</version>
</dependency>

Gradle 프로젝트를 사용한다면 build.gradle 파일에 아래의 의존성을 추가해줍니다.

dependencies {
    implementation 'org.slf4j:slf4j-api:1.7.x'
    implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.x.x'
}

Log4j2 설정 파일 생성

Log4j2를 사용하기 위해서는 설정 파일을 생성해야 합니다. 우선 src/main/resources 디렉토리에 log4j2.xml 파일을 생성하고 다음과 같이 설정합니다.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d [%t] %-5level %logger{36} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

SLF4J 바인딩 사용하기

이제 SLF4J 바인딩을 사용하여 로깅 코드를 작성해보겠습니다. 예를 들어, 아래와 같은 코드를 작성해보겠습니다.

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

public class MyApp {

    private static final Logger logger = LoggerFactory.getLogger(MyApp.class);

    public static void main(String[] args) {
        logger.info("Hello, SLF4J!");
    }
}

위의 코드에서 LoggerFactory.getLogger(MyApp.class)를 통해 로깅을 위한 Logger 객체를 가져올 수 있습니다. 이후 logger.info("Hello, SLF4J!") 코드를 통해 로그를 작성할 수 있습니다.

실행 결과 확인

애플리케이션을 실행하면 콘솔에 2021-01-01 12:00:00 [main] INFO com.example.MyApp - Hello, SLF4J!와 같은 로그가 출력됩니다.

결론

SLF4J와 Log4j2를 함께 사용하여 로깅을 설정하는 방법에 대해 알아보았습니다. SLF4J를 통해 어플리케이션의 로그를 간편하게 관리할 수 있으며, 로그 레벨 및 출력 형식 등은 Log4j2의 설정 파일을 통해 자유롭게 조정할 수 있습니다.

참고 자료