on
[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