티스토리 뷰

기존 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

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31