Browse Source

新增 p6spy 日志打印支持

hubin 6 years ago
parent
commit
2889065e9c

+ 1 - 0
build.gradle.kts

@@ -58,6 +58,7 @@ val lib = mapOf(
     "jackson"                    to "com.fasterxml.jackson.core:jackson-databind:2.9.6",
     "tomcatjdbc"                 to "org.apache.tomcat:tomcat-jdbc:9.0.16",
     // datasource
+    "p6spy"                      to "p6spy:p6spy:3.8.1",
     "hikaricp"                   to "com.zaxxer:HikariCP:3.3.0",
     "druid"                      to "com.alibaba:druid:1.1.13",
     "commons-dbcp2"              to "org.apache.commons:commons-dbcp2:2.5.0",

+ 1 - 0
mybatis-plus-extension/build.gradle.kts

@@ -12,6 +12,7 @@ dependencies {
     implementation("${lib["spring-context-support"]}")
     implementation("${lib["spring-jdbc"]}")
     implementation("${lib["slf4j-api"]}")
+    implementation("${lib["p6spy"]}")
 
     testImplementation("${lib["spring-web"]}")
     testImplementation("${lib["javax.servlet-api"]}")

+ 23 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/p6spy/P6SpyLogger.java

@@ -0,0 +1,23 @@
+package com.baomidou.mybatisplus.extension.p6spy;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
+
+/**
+ * <p>
+ * P6spy SQL 打印策略
+ * </p>
+ *
+ * @author hubin
+ * @since 2019-02-20
+ */
+public class P6SpyLogger implements MessageFormattingStrategy {
+
+    @Override
+    public String formatMessage(int connectionId, String now, long elapsed, String category,
+                                String prepared, String sql, String url) {
+        return StringUtils.isNotEmpty(sql) ? new StringBuilder().append(" Consume Time:").append(elapsed).append(" ms ").append(now)
+            .append("\n Execute SQL:").append(sql.replaceAll("[\\s]+", " "))
+            .append("\n").toString() : null;
+    }
+}

+ 18 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/p6spy/StdoutLogger.java

@@ -0,0 +1,18 @@
+package com.baomidou.mybatisplus.extension.p6spy;
+
+/**
+ * <p>
+ * 输出 SQL 日志
+ * </p>
+ *
+ * @author hubin
+ * @since 2019-02-20
+ */
+public class StdoutLogger extends com.p6spy.engine.spy.appender.StdoutLogger {
+
+    @Override
+    public void logText(String text) {
+        // 打印红色 SQL 日志
+        System.err.println(text);
+    }
+}