Spring Boot에서 JPA 쿼리 로그를 설정하는 방법과 로그에 ?로 표시되는 바인딩 파라미터 값을 표시하는 방법에 대해 설명드리겠습니다.
쿼리 관련 로그 설정
JPA 쿼리를 로그에 표시하도록 설정하는 방법은 여러가지가 있습니다.
# application.properties
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comment=true
spring.jpa.properties.hibernate.highlight_sql=true
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.orm.jdbc.bind=TRACE
# application.yml
spring:
jpa:
show-sql: true
properties.hibernate:
format_sql: true
show_sql: true
use_sql_comment: true
hightlight_sql:true
logging:
level.org.hibernate:
SQL: DEBUG
orm.jdbc.bind: TRACE
비슷한게 많아보이는데, 각 설정에 대해 설명드리겠습니다.
spring.jpa.show-sql=true
해당 설정만 사용하면 다음과 같이 로그가 표시됩니다.
spring.jpa.properties.hibernate.show_sql=true와 같은 역할을 하기 때문에 두 설정 중 하나만 사용하면 됩니다.
spring.jpa.properties.hibernate.format_sql=true
이 옵션은 spring.jpa.show-sql=true 설정이나 spring.jpa.properties.hibernate.show_sql=true 옵션과 함께 사용해야합니다.
spring.jpa.properties.hibernate.use_sql_comment=true
이 옵션은 쿼리에 추가적인 주석을 표시할지 설정하는 옵션입니다.
spring.jpa.properties.hibernate.highlight_sql=true
쿼리에 색깔로 하이라이트 효과를 줄지 설정하는 옵션입니다.
파라미터 바인딩 값 로그 표시 방법
SQL 관련 로그 설정만 하면 쿼리에 바인딩되는 값이 전부 ?로 나와서 어떤 값이 들어가는지 확인할 수 없습니다.
?로 된 값을 표시하는 방법에 대해 설명드리겠습니다.
logging.level.org.hibernate.orm.jdbc.bind=TRACE
logging.level.org.hibernate.SQL=debug 설정과 함께 사용하면 쿼리도 같이 확인할 수 있습니다.
참고로 logging.level.org.hibernate.type=TRACE나 logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 설정은 스프링 부트 3버전에서는 적용되지 않는 것 같습니다.