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 |
댓글