From c25cc6feb73ba582ff72a86cce800601f928e08e Mon Sep 17 00:00:00 2001 From: dgjinsu Date: Tue, 11 Jun 2024 23:11:31 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20p6spy=20formatter=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spy.log | 1 + .../global/config/P6SpySqlFormatter.java | 38 +++++++++++++++++++ src/main/resources/application.yml | 3 -- 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 spy.log create mode 100644 src/main/java/poison/global/config/P6SpySqlFormatter.java diff --git a/spy.log b/spy.log new file mode 100644 index 0000000..77a646c --- /dev/null +++ b/spy.log @@ -0,0 +1 @@ +1717316396221|33|rollback|connection 2|url jdbc:mysql://localhost:3306/poison?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&characterEncoding=UTF-8|| diff --git a/src/main/java/poison/global/config/P6SpySqlFormatter.java b/src/main/java/poison/global/config/P6SpySqlFormatter.java new file mode 100644 index 0000000..75ea3d1 --- /dev/null +++ b/src/main/java/poison/global/config/P6SpySqlFormatter.java @@ -0,0 +1,38 @@ +package poison.global.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 P6SpySqlFormatter 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; + } +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2f1e8e2..782e648 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -23,6 +23,3 @@ spring: # properties: # hibernate.format_sql: true # dialect: org.hibernate.dialect.MySQL8InnoDBDialect -logging: - level: - org.hibernate.SQL: debug \ No newline at end of file