로깅 퍼사드(Logging Facade) & 로거(Logger)
Logging Facade
- Logger API들을 추상화해놓은 인터페이스
- 로깅 퍼사드를 통해 로거 사용
- 장점 : 구현체를 쉽게 바꿀 수 있다 (Spring Data JPA처럼)
- 종류 : SLF4j / JCL / Commons Logging
Logger
- 종류: log4j2 / JUL(java.util.logging) / LogBack
스프링부트의 로깅
- 과거 : Commons Logging
- 현재 : Spring-JCL의 개입으로 Commons Logging(인터페이스) -> SLF4j(인터페이스) -> Logback(구현체)
- 중요 : 최종적으로 Logback을 사용함을 기억
- SLF4j는 의존성에 의거하여 로거를 선택한다. 어떤 구현체로도 바꿀 수 있다.
로깅 관련 의존성
- jul-to-slf4j : jul을 사용하는 코드 -> slf4j로 보냄
- log4j-to-slf4j : log4j를 사용하는 코드 -> slf4j로 보냄
log4j / log4j2를 slf4j로 보내는 slf4j bridge
- 결국 slf4j가 받아서, Logback으로 로그를 남기게 됨.
로그로 남는 것
- 날짜
- 시간
- 로그레벨
- pid
- 스레드이름
- 패키지경로
- 메세지
로그 레벨 조정
program arguemnts로 --debug
logging.level.패키지=로그레벨
logging.level.org.kkambi=DEBUG logging.level.org.kkabmi=TRACE
로그로 남는 것
- 날짜
- 시간
- 로그레벨
- pid
- 스레드이름
- 패키지경로
- 메세지
디버그 모드
- 디버그 모드라고 모든 메세지를 디버그 레벨로 로깅하지 않음
- 일부의 핵심 라이브러리 = 코어 로거 (임베디드 컨테이너, 하이버네이트, 스프링부트)만 해당
- 모든 메세지를 찍고 싶다면 --trace
콘솔창 컬러 로깅
spring.output.ansi.enabled=always
로깅 파일 출력
logging.file
ORlogging,path
- 기본적으로 10메가마다 rotate
logging.path=logs
커스텀 로그 설정 파일 사용
- full log control을 원할 때
- Logback: logback-spring.xml (추천)
- Logback Extension과 같은 추가기능 사용가능
- 로그백 설정 파일 안에서 프로파일이나 Env 사용가능
- 특정 프로파일일 때만 로그가 찍히도록 설정
- Environment에 등록된 프로퍼티 값을 사용가능
- 로깅 패턴 등을 통해 성능에 영향끼칠 수 있는 로그 걸러내기!
로거를 Log4j2로 변경하기
- 내장 WAS 변경할 때랑 동일
- Logback 의존성이 담긴
org.springframework.boot:spring-boot-starter-logging
를 exclude - log4j2 의존성을 추가
dependencies { compile ("org.springframework.boot:spring-boot-starter-web"){ exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' } compile "org.springframework.boot:spring-boot-starter-log4j2" }
'학습 > Spring' 카테고리의 다른 글
[spring] 스프링부트의 Spring-Boot-Devtools (0) | 2020.04.18 |
---|---|
[spring] 스프링부트의 테스트 (0) | 2020.04.17 |
[spring] 스프링의 @Configuration과 @Profile (0) | 2020.04.15 |
[spring] 스프링부트의 외부 설정 (활용) (0) | 2020.04.12 |
[spring] 스프링부트의 외부 설정 (개념) (0) | 2020.04.11 |
댓글