출처: https://goddaehee.tistory.com/206
이 글 읽기전 알아야 할 사전지식: https://flexyduck.tistory.com/245
[스프링부트 (5)] Spring Boot Log 설정(1) - Logback
안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 부트 Log 설정 - 로그백] 입니다. : -)
1. Logback 이란? 특징?
- 자바 오픈소스 로깅 프레임워크, SLF4J의 구현체
- 스프링 부트의 기본으로 설정되어 있어서 사용시 별도로 라이브러리를 추가하지 않아도 된다.
- log4j, log4j2 등과 성능을 비교했을 때에도 logback이 더 훌륭한 성능을 보여준다.
- spring-boot-starter-web 안에 spring-boot-starter-logging에 구현체가 있다.
- Logback을 이용하여 로깅을 수행하기 위해서 필요한 주요 설정요소로는 Logger, Appender, Encoder의 3가지가 있으며 각각은 다음과 같은 역할을 수행한다.
- 공식 매뉴얼 참고! (http://logback.qos.ch/manual/index.html)
- 스프링부트 doc 참고 ! (https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-logging)
1. Spring boot logback 설정
▶ CASE) 스프링, 일반 자바프로그램의 경우
- logback.xml 파일을 resources 디렉토리에 만들어서 참조한다.
▶ CASE) 스프링 부트
- logback-spring.xml 파일을 resources 디렉토리에 만들어서 참조한다.
- 참고 순서
1) classpath(resources디렉토리 밑)에 logback-spring.xml파일이 있으면 설정파일을 읽어간다.
2) logback-spring.xml파일이 없다면 .yml(.properties)파일의 설정을 읽어간다.
3) logback-spring.xml파일과 .yml(.properties)파일이 동시에 있으면 .yml(.properties) 설정 파일을 적용 후 xml파일이 적용된다.
- 위에서 얘기한 대로 스프링 부트 에서는 logback-spring.xml을 사용해서 Spring이 logback을 구동할 수 있도록 지원해 주며 이를 이용하여 profile, 즉 배포 환경에 따른(spring.profiles.active을 활용하여) application.xml에 설정된 properties를 읽어올 수 있다.
ex) spring.profiles.active=local
logback-local.properties => console-logging
logback-dev.properties => file-logging
logback-prod.properties => file-logging,remote-logging
스프링 프로파일에 따른 설정 방법은 추후 하단의 예제소스를 통해 살펴보도록 하자.
2. 로그 레벨 순서 및 사용방법
▶ TRACE < DEBUG < INFO < WARN < ERROR
1) ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시한다.
2) WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타낸다.
3) INFO : 상태변경과 같은 정보성 로그를 표시한다.
4) DEBUG : 프로그램을 디버깅하기 위한 정보를 표시한다.
5) TRACE : 추적 레벨은 Debug보다 훨씬 상세한 정보를 나타낸다.
- 로그에 설정할 수 있는 레벨은 총 5가지다.
- 위의 순서대로 높은 레벨을 가진다. 출력 레벨의 설정에 따라 설정 레벨 이상의 로그를 출력 한다.
- 예를 들어 로깅 레벨 설정을 "INFO"로 하였을 경우 "TRACE", "DEBUG" 레벨은 무시한다.
---다 복붙 안되므로 해당 사이트 가서보기---
'Spring&IntelliJ' 카테고리의 다른 글
DB 컨넥션 풀과 Hikari Connection pool 에 대해서 (1) | 2023.12.28 |
---|---|
Spring과 MySQL 연동에서의 application.properties설정 (0) | 2023.12.28 |
배포환경과 Spring Boot Profile적용 (1) | 2023.12.28 |
JPA properties설정관련 (0) | 2023.12.28 |
방언(dialect)(hibernate.dialect) 이란? (1) | 2023.12.28 |