on
[공부] Logging, SLF4J, Logback
[공부] Logging, SLF4J, Logback
1. Logging
- 프로그램 개발 중이나 완료 후 발생할 수 있는 오류에 대해 디버깅하거나 운영 중인 프로그램 상태를 모니터링하기 위해 필요한 정보(로그)를 기록하는 것
- java.util.logging, logback, log4j 등 다양한 Logging Framework 존재
2. SLF4J(Simple Logging Facade for Java)
- 다양한 Logging Framework들의 추상화를 제공 (단독 사용 X)
- Facade 패턴 -> 구현체의 종류에 상관없이 일관된 로깅 코드 작성 가능
- 개발에서 SLF4J API를 사용하여 로깅 코드를 작성
- 배포에서 바인딩된 Logging Framework가 실제 로깅 코드 수행
- Springboot의 기본 Logging Framework
3. Logback
1) 특징
- log4j의 후속 Logging 라이브러리
- log4j보다 빠른 수행과 적은 메모리 점유
- xml로 logging을 설정함 (logback.xml)
- 자동적으로 오래된 로그 지우고 백업이 가능함
2) 구조
① Logger
- 로그의 주체, 메시지 전달
- 특정 패키지 안의 특정 레벨 이상인 것에 대해 출력
② Appender
- 어디에 출력할 것인지에 대해 기술
- ConsoleAppender : 콘솔에 로그 기록
- FileAppender : 파일에 로그 기록
- RollingFileAppender : 여러 개의 파일을 순회하며 로그 기록
- SMTPAppender : 메일로 로그 기록
- DBAppender : DB에 로그 기록
③ Encoder
- 어떻게 출력할 것인지에 대해 기술
- 메시지 포맷
3) 레벨
ERROR < WARN < INFO < DEBUG < TRACE
- 설정된 로그 레벨에 따라 하위 레벨을 포함하여 로그 출력
ex) 레벨이 INFO인 경우 ERROR, WARN, INFO 레벨 로그만 출력
4) logback.xml
: 출력 위치 지정 (Appender 지정)
: 출력 pattern 지정
: 로그 파일 저장 위치 및 이름 지정
: 오래된 로그 백업 및 삭제
: 백업 파일 이름
: 최대 저장 기간(일)
: 파일 용량
: 로그 레벨 지정
: 해당되는 Appender 지정
+) logback 사용
// logger 선언 private static final Logger logger = LoggerFactory.getLogger(클래스이름.class); // logger 사용 logger.debug("debug {}", 변수); logger.error("error {}", 변수);
from http://ju-zero.tistory.com/70 by ccl(A) rewrite - 2021-10-06 15:27:06