티스토리 뷰
기존 log를 관리하기 위한 구현체로써 log4j가 사용되었다. 그러나 보다 안정성이 높고 편리하게 log를 관리하기 위해 Logging framework인 Slf4j(Simple Logging Façade for Java)와 그 구현체로써 Logback이 고안되었다.
Slf4j는 일명 Façade 패턴으로, 이를 사용하면 구현체의 종류와 상관없이 일관된 로깅 코드를 작성할 수 있으며 구현체를 변경할 경우에도 최소한의 수정으로 교체가 가능하다. 이에 맞춘 Logback은 log4j의 후속 버전으로 만든 Logging 라이브러리이다. Logback은 springboot의 기본 Logging framework로 사용될만큼 범용적이고 다양한 기능을 가지고 있다.
log 관리 및 처리 구조는 다음과 같다.

Logback 특징
- 빠른 implementation
- 적은 메모리 점유
- XML로 logging 설정
- maxHistory 설정 값을 이용해 일정 기간이 지나면 로그파일 자동 삭제
- Filter 기능 : 사용자별 level 조정 가능
Logback 구조
Logback을 사용하기 위해서는 다음과 같은 tag들로 구성되어있다.
- Logger : 로그의 주체, 로그의 메시지 전달, 특정 패키지 안의 특정 레벨이상인 것에 대해 출력
- Appender : 어디에 출력할지에 대해 기술 - console / file / DB appender
- Encoder : 어떻게 출력할지에 대해 기술
Logback 환경설정 (pom.xml)
Logback을 사용하기 위해선 pom.xml에 다음과 같은 라이브러리를 추가로 설정해주어야 한다.
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency>
Logback 설정 (logback.xml)
src/main/resources 하단에 logback.xml 파일을 생성한 후 다음과 같이 Logback을 설정할 수 있다.
<configuration scan="true" scanPeriod="30 seconds"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>[%d{HH:mm:ss.SSS}][%-5level][%logger{36}.%method:line%line] - %msg%n</pattern> </encoder> </appender> <logger name="org.springframework" level="info" additivity="false"> <appender-ref ref="console" /> </logger> </configuration>
위 예시에서는
<appender>를 통해 console로 출력 위치를 지정하고, <encoder>를 통해 pattern과 같은 형태로 log를 출력한다.
또한 <logger>를 통해 info level 이상의 log를 참고한 console에 출력할 것임을 확인할 수 있다.
참고로, log의 level은 다음과 같이 구성되어있다.
OFF - FATAL - ERROR - WARN - INFO - DEBUG - TRACE - (ALL)
이렇게 구분되어있는 log level을 통해 원하는 level의 log정보를 선택적으로 확인할 수 있다. 예를 들어 log level을 info로 설정했을 경우, 그 이상의 레벨인 info, debug, trace에 관한 log가 모두 출력된다.
선택한 log 이외의 정보들에 대해서는 <root>로 설정해주도록 한다. log관리에 있어서 else와 같은 기능을 한다.
<root level="debug"> <appender-ref ref="CONSOLE"/> </root>
Logback 사용법
log를 출력할 java 파일에서는 다음 예시와 같이 사용하면 된다.
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SampleLogTest { private static final Logger log = LoggerFactory.getLogger(SampleLogTest.class); public void testLog() { log.debug("log test"); } }
위와 같이 사용할수 있고 일전에 다룬대로 lombok을 사용해서 로깅을 할수도 있다. 자세한 내용은 다음 글을 참조하자.
lombok 설치 및 @Slf4j 사용방법
자바로 코딩을 할때 반복적으로 또는 기계적으로 작업을 해야 하는 몇몇 경우가 있다. 예를들면 model 클래스를 작성할때 멤버변수를 정의하고 그에 따른 getter, setter 등을 만든다거나 로그를 사��
oingdaddy.tistory.com
끝!
'Framework > Logging' 카테고리의 다른 글
Logback include 사용하여 가독성 높이기 (0) | 2021.01.19 |
---|---|
log4j에서 slf4j + logback 으로 전환하기 (0) | 2020.08.07 |
Logback 오류 해결 - NoSuchMethodError: ch.qos.logback.classic.LoggerContext.removeObject(Ljava/lang/String;)V (0) | 2020.06.26 |
lombok 설치 및 @Slf4j 사용방법 (0) | 2020.06.11 |
NoClassDefFoundError: org/apache/commons/logging/LogFactory 오류 (0) | 2020.06.08 |