[SB_BASIC] SLF4J와 Logback

junghan·2023년 5월 18일
0

SpringBootProject

목록 보기
3/35
post-thumbnail

자바 애플리케이션 개발 시 로깅은 중요한 요소입니다. 로깅은 애플리케이션의 실행 상태와 이벤트 정보를 기록하여 디버깅, 모니터링, 성능 분석 등에 도움을 줍니다. (현업에서는 System.out.println 대신 사용한다고함) 이를 위해 SLF4J와 LOGBACK는 매우 강력하고 유연한 로깅 솔루션으로 알려져 있고, Spring boot에서 기본으로 사용합니다.

이 글에서는 SLF4J와 LOGBACK를 사용하여 자바 애플리케이션의 로깅을 어떻게 구성하고 활용할 수 있는지 알아보겠습니다.

SLF4J와 LOGBACK의 개요

  • SLF4J(Simple Logging Facade for Java)는 로깅 시스템을 위한 추상화 계층을 제공합니다. (퍼사드 디자인 패턴)
  • SLF4J를 사용하면 로깅 시스템에 종속되지 않고 일관된 API를 통해 로깅 코드를 작성할 수 있습니다. (Logback 말고도 다른 로깅 시스템 사용가능)
  • LOGBACK은 SLF4J의 구현체로, 로깅 시스템의 기능을 제공하는 강력한 라이브러리입니다.
  • LOGBACK은 다양한 로깅 대상에 메시지를 출력하고, 로깅 설정을 유연하게 구성할 수 있습니다.


SLF4J와 LOGBACK의 사용법

  • 프로젝트에 SLF4J와 LOGBACK의 종속성을 추가합니다.
  • SLF4J의 LoggerFactory 클래스를 사용하여 Logger 인스턴스를 생성합니다.
  • 생성된 Logger 인스턴스를 통해 로그 메시지를 출력합니다.
  • 로깅 메시지의 레벨에 따라 TRACE, DEBUG, INFO, WARN, ERROR 등의 메시지를 출력할 수 있습니다.
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 메시지가 출력됩니다.



로깅 설정 파일 구성

  • LOGBACK을 사용할 때는 로깅 설정 파일을 구성하여 로그 메시지를 어떻게 처리할지 지정할 수 있습니다.
  • 설정 파일에서는 로그 메시지의 형식, 출력 대상(콘솔, 파일, 데이터베이스 등), 로깅 레벨 등을 설정할 수 있습니다.
  • 로깅 설정 파일은 일반적으로 logback.xml 또는 logback.xml로 저장되며, 클래스 패스에 위치시켜야 합니다.
  • 생성 경로는 src/main/resources/logback.xml 입니다.
<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 레벨 이상의 로그를 출력합니다.



로깅의 활용

  • 로그 메시지의 레벨과 형식을 적절하게 구성하여 애플리케이션의 실행 상태와 이벤트를 기록합니다.
  • 디버깅 시에는 TRACE 또는 DEBUG 레벨의 로그를 사용하여 세부 정보를 확인할 수 있습니다.
  • 운영 환경에서는 INFO 또는 WARN 레벨의 로그를 사용하여 중요한 사항을 추적합니다.
  • 로그 메시지를 적절한 대상(콘솔, 파일, 데이터베이스)에 출력하여 모니터링 및 분석에 활용할 수 있습니다.


SLF4J와 LOGBACK의 장점

  • SLF4J와 LOGBACK는 많은 유명 프레임워크와 애플리케이션에서 사용되고 있습니다.
  • 다양한 로깅 시스템과의 호환성을 제공하여 로깅 시스템을 변경하더라도 코드 수정을 최소화할 수 있습니다.
  • LOGBACK은 강력한 로깅 기능과 우수한 성능을 제공하여 대규모 애플리케이션에서도 효과적으로 활용할 수 있습니다.


결론:

SLF4J와 LOGBACK는 자바 애플리케이션의 로깅을 효율적으로 관리하기 위한 강력한 도구입니다. SLF4J의 추상화 계층을 통해 로깅 시스템에 종속되지 않는 로깅 코드를 작성하고, LOGBACK의 다양한 설정을 활용하여 로그 메시지를 적절한 대상에 출력할 수 있습니다. 이를 통해 애플리케이션의 디버깅, 모니터링, 성능 분석 등에 필요한 로깅 요구사항을 충족할 수 있습니다. SLF4J와 LOGBACK는 널리 사용되는 로깅 솔루션으로 애플리케이션 개발자들에게 권장되는 도구입니다.

profile
42seoul, blockchain, web 3.0

0개의 댓글