글 작성자: 개발섭

스프링부트에서 SQL문을 로깅하자

JPA에서 sql문 로깅하기 위해서는 application.yml에서 로깅레벨이나 옵션 사용해서 문제해결을 한다.

spring:
  jpa:
    properties:
      hibernate:
        format_sql: true
        use_sql_comments: true
logging:
  level:
    org.hibernate.SQL: debug
    org.hibernate.type.descriptor.sql: trace

이러면 JPA를 통해서 만들어지는 SQL문을 확인해볼 수도 있고… SQL문에서 발생하는 ?를 통해 들어가진 값들도 확인이 가능하다.

아래는 2.7.6 Spring boot 버젼입니다.

아래는 3.0.0 Spring Boot 버젼입니다.

Spring Boot 3.0.0 버젼으로 넘어오면서 이게 안되는 사례가 발생했다.

 

문제는 Hibernate 버젼업...

로그가 안찍혀서.. 뭔가 이상하다 싶어서 spring boot issue도 뒤져봐도 안나왔는데.. 잘 찾아보니까 이게 하이버네이트가 버젼업되면서 발생했던 문제이였다. 

스프링부트 버젼 3.0.0 부터는 하이버네이트가 6.1.5가 버젼업이 되면서 하이버네이트가 로깅하는 방식을 변경해버린게 문제였다. 

아래는 공식문서에서 제공하는 로깅 파트를 보면 확실히 차이가 난다.

ver 6.1.5 ver 5.6.1

그래서 org.hibernate.orm.jdbc.bind: trace를 걸어주면 정상적으로 기능이 다시 동작한다.

사진을 보면 로그를 제공하는 주체도 변경되었음을 확인할 수 있다.