로깅(Logging)이란 시스템 동작시 시스템의 상태와 작동 정보를 시간의 경과에 따라 기록하는 것, 그리고 그 기록을 로그(Log)라고 한다.
- 상황별 Level 지정하여 Level별 메시지를 선택 가능
- 응용 프로그램의 실행에 대한 흐름과 에러 확인 가능
- 프레임워크를 이용하여 간단하고 쉬운 사용 환경 조성 기능
- 모듈 별로 유연하게 메세지 출력 가능
- 자유로운 출력 위치 및 다양한 출력 형식 지원
로깅 관련 프레임 워크 : logback, log4j, logback, log4j2 , slf4j이 있다.
log4j2
- 동일한 쓰레드 기준으로 Log4j2 처리량이 Log4j1 혹은 Logback 보다 월등한 차이를 가지고 성능을 나타냄
- log4j2는 slf4j의 구현체
- dependency 추가
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
</dependency>
- log4j2.xml 파일 설정 참고 : https://wildeveloperetrain.tistory.com/36
slf4j
- 로깅에 대한 추상 레이어
- 코드를 일정하게 유지하면서 구현체의 전환 (다른 프레임워크로의 전환)을 쉽고 간단하게 할 수 있음
- 아래처럼 선언해서 사용할 필요 없이 @Slf4j annotation 사용 가능
Logger log = LoggerFactory.getLogger(getClass());
Log Level 순서
Error부터 순서대로 높은 레벨을 가지며 출력 레벨의 설정에 따라 설정 레벨 이상의 로그를 출력
TRACE < DEBUG < INFO < WARN < ERROR
- 1) ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시한다.
- 2) WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타낸다.
- 3) INFO : 상태변경과 같은 정보성 로그를 표시한다.
- 4) DEBUG : 프로그램을 디버깅하기 위한 정보를 표시한다.
- 5) TRACE : 추적 레벨은 Debug보다 훨씬 상세한 정보를 나타낸다.
스프링부트에서는 application.properties 값을 세팅하면 Logging Level 설정이 가능하다.
예시로 상위 패키지의 defalt level 설정 후 하위 패키지에 대한 각각 로깅 레벨을 별도로 설정할 수 있다.
logging.level.com.god.bo.test=info
logging.level.com.god.bo.test.controller=debug
내가 사용한 application.yml
logging:
level:
org:
springframework:
web:
socket:
config:
WebSocketMessageBrokerStats: INFO
참고
https://goddaehee.tistory.com/206
https://huisam.tistory.com/entry/log4j2
'Web > Spring Boot' 카테고리의 다른 글
[Spring]@Autowired (0) | 2021.11.24 |
---|---|
[SpringBoot]banner.txt만들기 (0) | 2021.11.22 |
[Spring Boot]Docker-compose (0) | 2021.10.27 |
[Spring Boot]Docker 이미지 빌드 (0) | 2021.10.27 |