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> : 출력 위치 지정 (Appender 지정)
<encoder> : 출력 pattern 지정
<file> : 로그 파일 저장 위치 및 이름 지정
<rollingPolicy> : 오래된 로그 백업 및 삭제
<fileNamePattern> : 백업 파일 이름
<maxHistory> : 최대 저장 기간(일)
<totalSizeCap> : 파일 용량
<root level="INFO"> : 로그 레벨 지정
<appender-ref ref="NAME" /> : 해당되는 Appender 지정
+) logback 사용
// logger 선언
private static final Logger logger = LoggerFactory.getLogger(클래스이름.class);
// logger 사용
logger.debug("debug {}", 변수);
logger.error("error {}", 변수);
'공부 > Java' 카테고리의 다른 글
[Java] String.valueOf() vs Integer.toString() (0) | 2021.10.07 |
---|---|
[Java-14] 람다식(Lambda expression) (0) | 2021.07.06 |
[Java-13] 쓰레드(Thread) (0) | 2021.07.06 |
[Java-12] 애너테이션(Annotation) (0) | 2021.07.02 |
[Java-12] 열거형(Enums) (0) | 2021.07.02 |