p6spy是數據庫動態監控的一種框架,可以使得數據庫數據無縫攔截和操作,而不必對現有應用程序代碼作任何修改,通常使用它來跟蹤數據庫操作,查看程序運行過程中執行的sql語句。
使用:
添加依賴
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.0</version>
</dependency>
新建配置類,自定義輸出格式
package com.tfjybj.intern3.config;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* p6spy打印日誌輸出格式修改
* 1.只打印最終執行的sql.
* 2.sql換到下一行
* 3.結尾處增加分號,以標示sql結尾
*
*/
public class P6SpyLogger implements MessageFormattingStrategy {
private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
@Override
public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) {
StringBuffer buffer = new StringBuffer();
if (!("").equals(sql.trim())) {
return buffer.append("/* ").append(format.format(new Date())).append(" | took ")
.append(elapsed).append("ms | ").append(category)
.append(" | connection ").append(connectionId).append(" */ \n ")
.append(sql).append(";").toString();
}
return "";
}
}
新建spy.properties
reloadproperties=true
appender=com.p6spy.engine.spy.appender.Slf4JLogger
#P6SpyLogger 類全路徑名
logMessageFormat=cn.e3mall.common.utils.P6SpyLogger
databaseDialectDateFormat=yyyy-MM-dd hh:mm:ss
excludecategories=info,debug,result,resultset
修改數據庫配置
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://192.168.**.**:****/inte***_**?autoReconnect=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true