들어가며
- 어플리케이션 운영 중 문제가 발생했을 경우, 로그를 통한 원인 파악이 이루어집니다.
- 이때 사용할 수 있는 로그 라이브러리는 다양하게 있습니다.
- 만일 한 로깅 라이브러리를 사용하다가, 다른 라이브러리로 바꾸게 된다면 어플리케이션 코드를 수정해야 합니다.
- 이러한 불편함을 없애고자 나온 것이 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 사용 예시에 대해 알아보았습니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.