DevBoi

[QueryDsl] Spring 3 버전 p6spy 적용 본문

Develop/[JPA]

[QueryDsl] Spring 3 버전 p6spy 적용

HiSmith 2023. 9. 9. 10:34
반응형

로깅에서 실제 동작하는 쿼리 로깅찍는 법

 

implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
logging:
  level:
    p6spy: info
    org:
      hibernate:
        type:
          descriptor:
            sql: trace
package com.boiler.core.backend.config;

import com.p6spy.engine.logging.Category;
import com.p6spy.engine.spy.P6SpyOptions;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import jakarta.annotation.PostConstruct;
import org.hibernate.engine.jdbc.internal.FormatStyle;
import org.springframework.context.annotation.Configuration;

import java.util.Locale;

@Configuration
public class P6SpyFomatter implements MessageFormattingStrategy {

  @PostConstruct
  public void setLogMessageFormat() {
    P6SpyOptions.getActiveInstance().setLogMessageFormat(this.getClass().getName());
  }

  @Override
  public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) {
    sql = formatSql(category, sql);
    return String.format("[%s] | %d ms | %s", category, elapsed, formatSql(category, sql));
  }

  private String formatSql(String category, String sql) {
    if (sql != null && !sql.trim().isEmpty() && Category.STATEMENT.getName().equals(category)) {
      String trimmedSQL = sql.trim().toLowerCase(Locale.ROOT);
      if (trimmedSQL.startsWith("create") || trimmedSQL.startsWith("alter") || trimmedSQL.startsWith("comment")) {
        sql = FormatStyle.DDL.getFormatter().format(sql);
      } else {
        sql = FormatStyle.BASIC.getFormatter().format(sql);
      }
      return sql;
    }
    return sql;
  }
}

 

 

위 처럼 설정하면, 로깅되는 쿼리가 ?로 된 파라미터가 아니라, 실제 수행하는 파라미터가 들어간 쿼리로 있어서

바로 dbms로 돌려볼수있다.

 

반응형

'Develop > [JPA]' 카테고리의 다른 글

[JPA] Nested Response List 처리  (1) 2023.09.30
[JPA] 스프링 Timezone 설정 + Aws, Docker mariadb timezone설정  (0) 2023.09.30
[JPA] Querydsl & Paging  (0) 2023.09.02
[JPA] JPAUpdateClause 사용  (0) 2023.09.02
[Jpa] Querydsl build Setting  (0) 2023.09.02