자바 애플리케이션 개발 시 로깅은 중요한 요소입니다. 로깅은 애플리케이션의 실행 상태와 이벤트 정보를 기록하여 디버깅, 모니터링, 성능 분석 등에 도움을 줍니다. (현업에서는 System.out.println 대신 사용한다고함) 이를 위해 SLF4J와 LOGBACK는 매우 강력하고 유연한 로깅 솔루션으로 알려져 있고, Spring boot에서 기본으로 사용합니다.
이 글에서는 SLF4J와 LOGBACK를 사용하여 자바 애플리케이션의 로깅을 어떻게 구성하고 활용할 수 있는지 알아보겠습니다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggingExample {
// Logger 인스턴스 생성
private static final Logger logger = LoggerFactory.getLogger(LoggingExample.class);
public static void main(String[] args) {
// 로그 메시지 출력
logger.trace("This is a TRACE message");
logger.debug("This is a DEBUG message");
logger.info("This is an INFO message");
logger.warn("This is a WARN message");
logger.error("This is an ERROR message");
}
}
위의 예제 코드에서는 SLF4J의 LoggerFactory 클래스를 사용하여 Logger 인스턴스를 생성합니다. getLogger() 메서드의 인자로는 현재 클래스인 LoggingExample.class를 전달합니다. 그런 다음, 생성된 Logger 인스턴스를 통해 로그 메시지를 출력합니다. 로그 메시지의 레벨에 따라 TRACE, DEBUG, INFO, WARN, ERROR 메시지가 출력됩니다.
<configuration>
<appender name="CONSOLE" 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="CONSOLE" />
</root>
</configuration>
위의 설정은 콘솔에 로그 메시지를 출력하도록 구성되어 있습니다. %d, %thread, %level, %logger, %msg
등의 패턴을 사용하여 로그 메시지의 형식을 지정할 수 있습니다.
root 요소의 level 속성은 로그 메시지의 최소 레벨을 설정합니다. 위의 설정에서는 DEBUG 레벨 이상의 로그를 출력합니다.
SLF4J와 LOGBACK는 자바 애플리케이션의 로깅을 효율적으로 관리하기 위한 강력한 도구입니다. SLF4J의 추상화 계층을 통해 로깅 시스템에 종속되지 않는 로깅 코드를 작성하고, LOGBACK의 다양한 설정을 활용하여 로그 메시지를 적절한 대상에 출력할 수 있습니다. 이를 통해 애플리케이션의 디버깅, 모니터링, 성능 분석 등에 필요한 로깅 요구사항을 충족할 수 있습니다. SLF4J와 LOGBACK는 널리 사용되는 로깅 솔루션으로 애플리케이션 개발자들에게 권장되는 도구입니다.