일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- eks
- propogation
- Salting
- Software maestro
- SW 마에스트로
- zset
- Helm
- 0 replica
- Strimzi
- slow query
- Kafka
- minreplica
- Debezium
- Grafana
- yml
- 스프링부트
- keda
- 동등성
- blue-green
- SW Maestro
- docket
- logback
- traceId
- spring boot
- Benchmarks
- 소프트웨어 마에스트로
- hammerDB
- Database
- Leaderboard
- Kubernetes
- Today
- Total
김태오
Hibernate Slow Query logging 및 yaml, properties 파일 동작 방식에 관하여 본문
Hibernate Slow Query logging 및 yaml, properties 파일 동작 방식에 관하여
ystc1247 2024. 7. 15. 18:51느린 데이터베이스 쿼리를 콘솔에 로깅하려는 시도를 했다.
HTTP intercepter과 비슷한 방식으로 데이터베이스에 쿼리가 처리되는 순간 hibernate 혹은 hikariCP 관련하여 설정파일 구현이 필요하지 않을까 싶었는데 생각보다 간단히 해결할 수 있다.
그냥 application.properties 에
spring.jpa.properties.hibernate.generate_statistics=true
logging.level.org.hibernate=INFO
hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS=원하는 단위 시간 MS (0초과)
를 추가하면 된다. yaml 로 설정하는 경우도 마찬가지로 늘 그랬듯 . -> : 로 해주면 된다.
당연히 로깅 레벨에 차등을 두거나 statistics 관련만 INFO 로 설정해도 문제없다.
그런데 로깅이 되지 않는다.
혹시나 해서 application.yaml 이 아닌 직접적인 설정 파일인 hibernate.properties 에 저 설정들을 추가하여 실행해보니 정상적으로 로깅됨을 확인할 수 있었다.
우선 명확히 할 것은, .yaml/.yml 파일과 .properties 파일을 혼용해서 쓰는 경우를 Spring Boot 개발사에서 고려하지 않았다는 것이다.
우선 https://docs.spring.io/spring-boot/docs/2.4.2/reference/htmlsingle/#boot-features-external-config 을 읽어보자.
환경 변수 등 설정파일에 담기는 configuration 들에 대한 우선순위가 명세화되어 있는데, .yaml format 과 .properties format 의 우선순위에 대한 것은 찾을 수 없다. 다만 테스트들을 통해 (위 경우와 같은) .properties 파일이 우선순위로 읽힘을 알 수 있다.
또 하나 눈여겨볼 것은, application-{ENV}.yml 이 application.yml 에 우선순위로 읽힌다는 것이다. 많은 프로젝트에서 환경관리를 위해 application.yml 을 공통으로 두고 develop, release, main 등의 환경을 별도로 정의하는 것을 흔하게 볼 수 있는데, 작동 방식이 문서화되어 있음을 확인할 수 있다.
'Spring Boot' 카테고리의 다른 글
스프링 부트 로그에 특정 로그 제외시키기 (0) | 2024.03.15 |
---|---|
FeignClient 사용시 PATCH method 가 안되는 오류 (0) | 2024.03.11 |
async 작업 시 thread 의 traceId 전파 (0) | 2024.03.09 |
동일성과 동등성 (0) | 2023.11.29 |
@Getter 와 @Setter 남용 (0) | 2023.11.02 |