[java] SLF4J와 Log4j의 로깅 전환하기

로그는 소프트웨어 개발과 유지보수를 위해 매우 중요한 요소입니다. SLF4J와 Log4j는 자바 애플리케이션에서 로깅을 관리하기 위해 널리 사용되는 라이브러리입니다. SLF4J는 로깅 시스템에 대한 추상화 계층을 제공하며, 실제로 사용할 로깅 시스템은 Log4j와 같은 구현체로 바꿀 수 있습니다.

이번 기사에서는 SLF4J와 Log4j를 함께 사용하고 있는 자바 프로젝트에서 Log4j로 로깅 시스템을 전환하는 방법에 대해 알아보겠습니다.

1. 의존성 설정

먼저, 프로젝트의 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-log4j12</artifactId>
        <version>1.7.32</version>
    </dependency>
    ...
</dependencies>

SLF4J API와 Log4j 구현체를 의존성으로 추가합니다.

2. Log4j 설정

Log4j 설정 파일인 log4j.properties를 프로젝트에 추가합니다. 이 파일은 로깅 시스템의 동작 방식을 설정합니다.

일반적으로, src/main/resources 디렉토리에 log4j.properties 파일을 생성하고 다음 예제와 같이 설정합니다.

log4j.rootLogger=INFO, FILE

log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=/path/to/log/file.log
log4j.appender.FILE.MaxFileSize=1MB
log4j.appender.FILE.MaxBackupIndex=10
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d [%-5p] %c{1} - %m%n

실제로는 /path/to/log/file.log 부분을 원하는 로그 파일 경로로 변경해야 합니다.

3. 코드 변경

이제 코드를 변경하여 SLF4J 및 Log4j를 사용하도록 설정해야 합니다.

3.1 로거 설정

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

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

LoggerFactory.getLogger()를 사용하여 로거 인스턴스를 생성합니다. logger를 이용하여 로그를 기록할 수 있습니다.

3.2 로그 기록

logger.info("This is an example log message.");

기존 코드에서는 System.out.println()과 같은 방식으로 로그를 출력했을 것입니다. 이를 logger.info()와 같이 로깅 코드로 변경합니다.

4. 동작 확인

Log4j 설정과 코드 변경이 완료되면, 애플리케이션을 실행하여 로그 파일에 로그가 기록되는지 확인할 수 있습니다.

마무리

이제 SLF4J와 Log4j를 함께 사용하며 애플리케이션의 로깅 시스템을 쉽게 전환할 수 있게 되었습니다. SLF4J의 유연성을 활용하여 다른 로깅 시스템으로 전환할 수도 있습니다. 성능 및 기능 요구 사항에 맞는 로깅 시스템을 선택하여 프로젝트에 적용해 보세요.

참고 자료