-
Spring Boot - Logback 적용하기Framework & Library/Spring Boot 2022. 2. 9. 12:24
Logback
Logback이란?
- Logback이란 Log4j를 기반으로 개발된 로깅(Logging) 라이브러리이다.
- Log4j에 비해 약 10배 정도 빠른 퍼포먼스를 자랑하며, 메모리 효율성이 높다
- 출시 순서 : Log4j → Logback → Log4j2
Logback 특징
- 로그에 특정 레벨을 설정할 수 있다. 따라서, 실 운영과 테스트 상황에서 각각 다른 출력 레벨을 설정하여 로그를 확인이 가능하다.
- 개발자가 선호하는 출력 방식을 설정할 수 있다.
- 설정 파일을 일정 시간마다 스캔하여 관리하기 때문에, 애플리케이션의 중단 없이 설정의 변경이 가능하다.
- 별도의 프로그램 없이 자체적으로 로그 압축을 지원한다.
- 로그 보관 기간을 설정할 수 있다.
로그 레벨
Trace → Debug → Info → Warn → Error
1. Trace : Debug 레벨보다 더 디테일한 메시지를 표현하기 위한 레벨
2. Debug : 애플리케이션의 디버깅을 위한 메시지 레벨
3. Info : 상태 변경과 같은 정보성 메시지를 의미
4. Warn : 시스템 에러의 원인이 될 수 있는 경고성 레벨, 처리가 가능한 사항을 의미
5. Error : 로직 수행 중에 오류가 발생한 경우, 시스템적으로 심각한 문제가 발생하여 작동이 불가한 경우
Logback 설정 파일의 형식
1. appender
- 로그의 형태 및 어디에 출력할지 설정하기 위한 영역이다.
- 대표적인 appender 형식은 아래와 같다.
ㆍ ConsoleAppender : 콘솔에 로그를 출력하는 방식
ㆍ FileAppender : 파일에 로그를 출력하는 방식
ㆍ RollingFileAppender : 여러 개의 파일을 순회하며 로그를 저장하는 방식
ㆍ SMTPApender : 로그를 메일로 보내는 방식
ㆍ DBAppender : DB에 로그를 저장하는 방식
2. encoder
- appender 내에 포함되는 항목이며, pattern을 사용하여 원하는 형식으로 로그를 표현할 수 있다.
3. root
- 설정한 appender를 참조하여 로그의 레벨을 설정할 수 있다.
- root 태그는 전역 설정이며, 지역 설정을 하기 위해서는 logger 태그를 사용한다.
로그 패턴
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger %msg %n</pattern>
패턴 의미 %Logger{length} Logger Name %-5level 로그 레벨, -5는 출력의 고정폭 값 %msg 로그 메세지 영역 %{PID:-} Process id %d 로그 기록 시간 %p 로깅 레벨 %F 로깅이 발생한 프로그램 파일명 %M 로깅이 발생한 메서드의 이름 %I 로깅이 발생한 호출지의 정보 %L 로깅이 발생한 호출지의 라인 수 %thread 현재 Thread 이름 %t 로깅이 발생한 Thread 이름 %c 로깅이 발생한 카테고리 %C 로깅이 발생한 클래스 이름 %m 로그 메시지 %n 줄바꿈 %% % 출력 %r 애플리케이션 실행 후 로깅이 발생한 시점까지의 시간
Logback 적용
logback-spring.xml 파일 생성
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" sanPeriod="30 seconds"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> <encoder> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger{30} %msg %n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="console"/> </root> </configuration>
- Spring Boot에는 기본적으로 Logback이 포함되어 있다. 따라서, 별도의 설치가 필요 없이 사용이 가능하다.
- src/main/resources 위치에 logback-spring.xml 파일을 생성하고 위 코드를 작성함으로써, 로그 출력에 대한 추가적인 설정이 가능하다.
ProductController 클래스 변경
- ProductController 클래스 내 getProduct() 메서드의 로그를 출력하기 위해 위와 같은 코드를 추가해준다.
- 로깅을 하기 위해서는 Logger 객체를 얻어야 하는데, LoggerFactory.getLogger() 메서드를 통해서 얻을 수 있다.
- LOGGER.info() 메서드를 사용해서 Info 레벨의 로그들을 출력할 수 있도록 설정한다.
테스트
- getProduct() 메서드에 대한 API를 호출하기 위해 Postman을 통해서 요청을 수행한다.
- getProduct() 메서드에 대한 API를 호출하면 위와 같은 로그가 콘솔에 출력됨을 확인할 수 있다.
GitHub - qlsdud0604/spring-boot-study
Contribute to qlsdud0604/spring-boot-study development by creating an account on GitHub.
github.com
728x90'Framework & Library > Spring Boot' 카테고리의 다른 글
Spring Boot - @ControllerAdvice, @ExceptionHandler를 활용한 전역 예외 처리 (0) 2022.02.11 Spring Boot - 유효성 검사 (0) 2022.02.10 Spring Boot - ORM이란? (0) 2022.02.03 Spring Boot - 서비스 구조 살펴보기 (0) 2022.02.03 Spring Boot - DELETE API (0) 2022.02.01