개요
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의 설정 파일을 통해 자유롭게 조정할 수 있습니다.