引包
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
配置
yml配置
修改driver-class-name为 com.p6spy.engine.spy.P6SpyDriver
修改url : 添加p6spy
问题 :
我使用的是druid 所以要修改一下druid配置:
druid.filters 配置中要去掉 wall
spy配置文件配置:
新建spy.properties文件,配置如下:
其中logMessageFormat 配置需要修改自定义的类路径
module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印配置
logMessageFormat=com.zf.work_manage.infrastructure.config.mybatis.P6spySqlFormatConfigure
# 使用日志系统记录sql
appender=com.p6spy.engine.spy.appender.StdoutLogger
## 配置记录Log例外
excludecategories=info,debug,result,batc,resultset
# 设置使用p6spy driver来做代理
deregisterdrivers=true
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动
driverlist=com.mysql.cj.jdbc.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 秒
outagedetectioninterval=2
类配置
新建 P6spySqlFormatConfigure类
package com.zf.work_manage.infrastructure.config.mybatis;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import java.text.SimpleDateFormat;
/**
* SQL格式化输出
*
* @author yss
*/
public class P6spySqlFormatConfigure implements MessageFormattingStrategy {
private 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 s4) {
return !"".equals(sql.trim()) ? "sql语句: " + sql.replaceAll("[\\t\\n\\r]", "") + ";" : "";
}
}