SLF4J가 뭔가요?

작성자 김아름 수정일 2022-10-17 15:23

#SLF4J, #logback, #로그, #kubernetes, #쿠버네티스

들어가며

  • 어플리케이션 운영 중 문제가 발생했을 경우, 로그를 통한 원인 파악이 이루어집니다.

  • 이때 사용할 수 있는 로그 라이브러리는 다양하게 있습니다.

  • 만일 한 로깅 라이브러리를 사용하다가, 다른 라이브러리로 바꾸게 된다면 어플리케이션 코드를 수정해야 합니다.

  • 이러한 불편함을 없애고자 나온 것이 SLF4J 입니다.



로깅 라이브러리 사용하기

SLF4J란 로깅 Facade로, 로깅에 대한 추상 레이어를 제공하는 인터페이스의 모음입니다.

즉, 로깅 라이브러리를 하나의 통일된 방식으로 사용할 수 있는 방법을 제공합니다.

어플리케이션은 SLF4J를 이용하여 로깅 라이브러리가 어떠한 것이든 같은 방법으로 로그를 남길 수 있습니다.


위 그림과 같이 어플리케이션은 어떠한 로깅 라이브러리를 사용하더라도, SLF4J API를 호출하고 있습니다.


스파클링소다에서 사용하고 있는 로깅 라이브러리는 logback입니다.

logback 로깅 라이브러리를 사용하는 예시를 살펴보겠습니다.


1. 라이브러리 추가하기

pom.xml에 logback 라이브러리를 추가합니다.

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
logback-classic 라이브러리는 slf4j-api 1.7.25에 의존성을 가지고 있기 때문에,
logback-cliassic 라이브러리를 추가했다면 slf4j 라이브러리를 추가하지 않아도 자동으로 설치가 됩니다.


2. logback 설정하기

logback.xml에 파일을 작성합니다.

<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS}[%thread]%-5level%logger{36}-%msg%n</pattern>
    </encoder>
</appender>
<logger name="chapters.configuration" level="INFO"/>
<logger name="chapters.configuration.Foo" level="DEBUG"/>
<root level="debug">
    <appender-ref ref="STDOUT"/>
</root>
</configuration>

logback.xml 파일의 configuration 요소 하위에 appender, logger, root등이 존재하게 됩니다.

  • appender : log를 어디에 어떠한 포맷으로 남길 것 인지를 정합니다.
  • logger : 어떤 package이하의 class에서, 어떤 lovel 이상의 log를 출력할 지를 결정합니다.


3. logger 객체 선언 및 호출

먼저 로그를 남기려는 class에 logger 객체를 선언합니다.

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

private static final Logger LOGGER = LoggerFactory.getLogger(MainVerticle.class);


그 후, logger가 가지고 있는 log method를 이용하여 로그를 출력할 수 있습니다.

logger.trace("{} {} 출력", "값1", "값2");
logger.debug("{} {} 출력", "값1", "값2");
logger.info("{} {} 출력", "값1", "값2");
logger.warn("{} {} 출력", "값1", "값2");
logger.error("{} {} 출력", "값1", "값2");
logger의 log method는 trace, debug, info, warn, error 가 있습니다.



마무리

  • slf4j와 logback 사용 예시에 대해 알아보았습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300