[jpa] 쿼리 로그 설정

[jpa] 쿼리 로그 설정

jpa 쿼리가 보이는 설정을 하는건 크게 2가지가 있다.

1) show-sql 을 true로 설정하는 방법

2) p6spy를 이용한 로깅(외부라이브러리).

1번은 파라미터 안에 무엇이 들어있는지 알 순 없고 바인딩쿼리만 로그에 찍힌다.

2번은 추가설정을 좀 해주어야 한다.

1)

show-sql을 사용하는 방법은 간단하다. application.properties 에다 다음이 설정을 추가하면 된다.

spring.jpa.show-sql=false # 여기 spring.jpa.properties.hibernate.format_sql=false # 여기 spring.jpa.hibernate.ddl-auto=none spring.jpa.hibernate.generate-ddl=true spring.jpa.hibernate.database=mysql spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.properties.hibernate.default_batch_fetch_size = 1000

format_sql을 같이 설정하면 SQL문이 포멧되어 로그에 찍힌다.(아래)

select member0_.id as id1_29_, member0_.email as email4_29_, member0_.nickname as nickname6_29_, from member member0_ where member0_.id=?

2)

build.gradle에 다음을 추가한다

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

application.properties 에 다음을 추가한다

기본값이 true 이니 운영으로 배포할 땐 false로 하기로 하자.

# jpa query, parameter 로그 decorator.datasource.p6spy.enable-logging=true decorator.datasource.p6spy.multiline=true

설정하는 파일을 열어보면 다음과 같다.

@Getter @Setter public class P6SpyProperties { /** * Enables logging JDBC events. * * @see P6LogFactory */ private boolean enableLogging = true; /** * Enables multiline output. */ private boolean multiline = true; /** * Logging to use for logging queries. */ private P6SpyLogging logging = P6SpyLogging.SLF4J; /** * Name of log file to use (only for logging=file). */ private String logFile = "spy.log"; /** * Custom log format. */ private String logFormat; public enum P6SpyLogging { SYSOUT, SLF4J, FILE } }

실행해보면 다음과 같이 파라미터가 자동 바인딩 되어 로그로 나온다.

select member0_.id as id1_29_, member0_.birthday as birthday2_29_, member0_.country as country3_29_, member0_.email as email4_29_, member0_.gender as gender5_29_, member0_.nickname as nickname6_29_, member0_.social_id as social_i7_29_, member0_.social_type as social_t8_29_ from member member0_ where member0_.id=1;

끝.

from http://lemontia.tistory.com/995 by ccl(A) rewrite - 2021-01-15 09:02:24