Error/Spring Boot

[Spring Boot]쿼리 파라미터 로그 남기기, SQL 한줄 출력 해결

prao 2023. 7. 12. 10:55
반응형

에러 내용

1) 발생

쿼리가 한줄로 출력되어 가독성이 저하되고 쿼리 파라미터 로그가 남지 않음


2) 원인

구글링을 통해 여러 사람들이 말한 방법들을 다 해봤다. 우선 나는 스프링부트 2.7.~ 을 사용 중이다. 우선 쿼리파라미터는 아래의 라이브러리와 로깅 구문을 통해 해결할 수 있다.

스프링부트 2.x

  • 외부 라이브러리 추가
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'
  • application.yml에 logging 구문 추가
logging:
  level:
    org.hibernate.SQL: debug
    org.hibernate.type: trace

스프링부트 3.0 이상을 사용할 경우

  • 외부 라이브러리 추가
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
  • application.yml에 logging 구문 추가
logging:
  level:
    org.hibernate.SQL: debug
		org.hibernate.orm.jdbc.bind: trace

나는 스프링부트 2.7.x 를 사용 중인데 위의 방법대로 해도  쿼리 파라미터는 보여지나, SQL 구문이 한줄로 출력되어 가독성이 떨어졌다. 그래서 계속 찾아보면서 블로그 포스팅을 보고 수정한 결과 원인을 찾았다.

기존의 application.yml에 jpa 설정 타입의 차이가 문제였다.


3) 해결

  • (변경 전) application.yml
spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpashop;
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      format_sql: true

logging:
  level:
    org.hibernate.SQL: debug
    org.hibernate.type: trace
  • (변경 전) 출력

변경 전 쿼리

→ 한줄로 출력이 되어 가독성이 떨어진다.

  • (변경 후) application.yml
spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpashop;
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        format_sql: true

logging:
  level:
    org.hibernate.SQL: debug
    org.hibernate.type: trace
  • (변경 후) 출력

변경 후 쿼리

해결 완료!

 

반응형