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