공부/프로그래밍

[jpa] 로그 설정(logging 설정 외 p6spy로 하기)

demonic_ 2020. 11. 27. 21:45

logging.level.jdbc 로 설정하는 방법은 Mybatis에 설정할때 사용할 수 있는 것이다.

JPA로 되어있는 프로젝트에서는 다른 방법으로 로깅해야 한다.

 

하나는 application.properties에 다음의 두 설정을 하는 방법이다

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

 

이렇게 할 경우 쿼리가 생성되면서 화면에 보여진다. 다만 바인딩 값이 ?로 표기된다.

format_sql 을 false로 지정할 경우 쿼리가 한줄로 나와 가독성의 떨어질 수 있으니 주의.

 

?로 들어가는 파라미터에 실제 값이 적용되는 쿼리를 보고 싶다면 다음의 옵션을 추가한다

logging.level.org.hibernate.type=trace

이렇게하면 화면에 다음처럼 보이는데, 보기가 불편하다

Hibernate: 
    select
        a0_.store_cd as store_cd1_0_,
        a0_.yyyymmdd as yyyymmdd2_0_,
        a0_.cnt as cnt3_0_,
    from
        [테이블명] a0_ 
    where
        a0_.yyyymmdd=? 
        and a0_.store_cd=?
2020-11-27 21:36:56.257 TRACE 44449 --- [           main] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [DATE] - [2020-10-27]
2020-11-27 21:36:56.258 TRACE 44449 --- [           main] o.h.type.descriptor.sql.BasicBinder      : binding parameter [2] as [VARCHAR] - [1001]

 

파라미터가 적용된 쿼리문을 보려면 다음의 플러그인을 사용하는게 좋다.

 

 

# p6spy 설정

implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'

github 주소:

https://github.com/gavlyukovskiy/spring-boot-data-source-decorator

 

gavlyukovskiy/spring-boot-data-source-decorator

Spring Boot integration with p6spy, datasource-proxy, flexy-pool and spring-cloud-sleuth - gavlyukovskiy/spring-boot-data-source-decorator

github.com

 

application.properties 에 다음으로 설정이 가능하다.(기본설정이기 때문에 설정을 생략해도 된다)

decorator.datasource.p6spy.enable-logging=true

이렇게 할경우 쿼리가 다음과 같이 2개가 표시된다.

insert into [테이블명] ([컬럼명...]) values (?, ?, ?, ?, ?)
insert into [테이블명] ([컬럼명...]) values (52, 0, 3000, '1234', '2020-02-21T00:00:00.000+0900');

 

decorator.datasource.p6spy.enable-logging 를 false로 두면 로깅이 되지 않는다

그래서 운영환경에서는 false로 설정하길 권장한다.

 

그 외 필요한 옵션은 github에 들어가면 확인할 수 있다.

 

 

끝.