본문 바로가기
Spring

Logback 노트

by SuldenLion 2022. 11. 4.
반응형

Logback 이란?

- Log4J를 기반으로 개발된 로깅(Logging) 라이브러리. log4J에 비해 약 10배 정도 빠른 퍼포먼스, 메모리 효율성 증대 (출시 순서 : log4J -> logback -> log4j2)

 

Logback 특징 :

- 로그에 특정 레벨을 설정할 수 있음 (Trace -> Debug -> Info -> Warn -> Error). 

- 실 운영과 테스트 상황에서 각각 다른 출력 레벨을 설정하여 로그를 확인할 수 있음.

- 출력 방식에 대해 설정할 수 있음.

- 설정 파일을 일정 시간마다 스캔하여 어플리케이션 중단없이 설정 변경 가능.

- 별도의 프로그램 없이 자체적으로 로그 압축을 지원

- 로그 보관 기간 설정 가능

 

Logback의 구조

                                                                              Appender

                                                                           <<interface>>

                                                                                    ↑

                                                              UnsynchronizedAppenderBase

                                                                                    ↑

                      Filter                 →                 OutputStreamAppender                 ←               Encoder

                                                                        ↗                      ↖                                     <<interface>>

                                                    ConsoleAppender                FileAppender

                                                                                                           ↑

                                                                                             RollingFileAppender

 

Logback 설정

- 일반적으로 Classpath에 있는 logback 설정 파일을 참조하게 됨. (Java Legacy, Spring의 경우에는 logback.xml 파일을 참조 / Spring Boot의 경우에는 logback-spring.xml 파일을 참조)

 

Appender

- Log의 형태 및 어디에 출력할지 설정하기 위한 영역. 

- 대표적인 Appender 형식들 :

ConsoleAppender : 콘솔에 로그를 출력 / FileAppender : 파일에 로그를 저장 / RollingFileAppender : 여러개의 파일을 순회하며 로그를 저장 / SMTPAppender : 로그를 메일로 보냄 / DBAppender : 데이터베이스에 로그를 저장

 

Encoder

- Appender 내에 포함되는 항목이며, pattern을 사용하여 원하는 형식으로 로그를 표현할 수 있음. 

 

Root

- 설정한 Appender를 참조하여 로그의 레벨을 설정할 수 있음. root는 전역 설정이며, 지역 설정을 하기 위해서는 logger를 사용.

 

로그 레벨 :

TRACE > DEBUG > INFO > WARN > ERROR

1) ERROR : 로직 수행 중에 오류가 발생한 경우, 시스템적으로 심각한 문제가 발생하여 작동이 불가한 경우

2) WARN : 시스템 에러의 원인이 될 수 있는 경고 레벨, 처리 가능한 사항

3) INFO : 상태 변경과 같은 정보성 메시지

4) DEBUG : 어플리케이션의 디버깅을 위한 메시지 레벨

5) TRACE : DEBUG 레벨보다 더 디테일한 메시지를 표현하기 위한 레벨

(예를 들어, 로그 레벨을 'INFO'로 설정했을 경우 'TRACE', 'DEBUG' 레벨은 출력되지 않음)

 

Pattern

%Logger{length} : Logger Name / %-5level : 로그 레벨, -5는 출력의 고정폭 값 / %msg : 로그 메세지 영역 (==%message) / ${PID:-} : 프로세스 ID / %d : 로그 기록 시간 / %p : 로깅 레벨 / %F : 로깅이 발생한 프로그램 파일명 / %M : 로깅이 발생한 메소드의 이름 / %I : 로깅이 발생한 호출지의 정보 / %L : 로깅이 발생한 호출지의 라인 수 / %thread : 현재 Thread 명 / %t : 로깅이 발생한 Thread 명 / %c : 로깅이 발생한 카테고리 / %C : 로깅이 발생한 클래스 명 / %m : 로그 메세지 / %n : 줄바꿈 / %% : % 출력 / %r : 어플리케이션 실행 후 로깅이 발생한 시점까지의 시간

 

반응형

'Spring' 카테고리의 다른 글

Spring Boot Exception Handling 노트  (0) 2022.11.06
Spring Boot Validation 노트  (0) 2022.11.05
ORM, JPA, Spring Data JPA 노트  (0) 2022.11.03
DTO, DAO, Repository, Entity 노트  (0) 2022.11.02
Lombok 정리 노트  (0) 2022.11.01

댓글