Spring 쿼리 파라미터 인자값 로그로 확인하기

쿼리 파라미터 인자값 로그로 확인하기

실제값이 아닌 ? 로 로깅되는 쿼리 파라미터 값의 실제 값을 확인해봅니다.

Goal

1
2
3
4
5
6
7
Hibernate: 
    insert 
    into
        member
        (id, name) 
    values
        (null, ?)
  • 위와같이 로그가 나오는 상황에서 ?의 실제값을 확인하는 법을 알아봅니다.

yml 추가

1
2
logging.level:
  org.hibernate.type: trace

image

  • binding parameter 를 보고 ?jys가 들어갔음을 확인할 수 있습니다.

외부 라이브러리 추가

p6spy 를 사용합니다.

P6Spy is a framework that enables database data to be seamlessly intercepted and logged with no code changes to existing application. The P6Spy distribution includes P6Log, an application which logs all JDBC transactions for any Java application.

  • p6spy를 이용해 JDBC 트랜잭션을 전부 로그로 확인할 수 있습니다.
1
2
3
4
5
6
dependencies {
    ...
	// 쿼리파라미터 로그확인용 외부 라이브러리
	implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0'
    ...
}

라이브러리 Github URL

image

1
insert into member(id, name) values (null, 'jys')
  • 좀더 명시적 으로 확인이 가능해진것을 볼 수 있습니다. (사진을 클릭하면 커집니다)
  • 주의: 로깅작업이 어플리케이션 성능에 영향을 줄 수 있으므로 실제 배포시에도 사용하려면 성능측정이 병행되는것이 좋습니다.

Reference