p6spy是一个开源项目,通常使用它来跟踪数据库操作,查看程序运行过程中执行的[sql语句
Consume Time:17 ms 2022-10-05 16:22:46
Execute SQL:select student_id,student_name,student_enrollmenttime, student_tel,education_id,student_weight, student_bloodtype,student_sex from student LIMIT 10
<dependency>
<groupid>p6spygroupid>
<artifactid>p6spyartifactid>
<version>3.9.1version>
dependency>
修改连接数据库连接信息
spring.datasource.druid.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
spring.datasource.druid.url=jdbc:p6spy:mysql://127.0.0.1:3306/manymanygood?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=false&autoReconnect=true&serverTimezone=GMT%2B8
增加 spy.properties 配置文件 , 存放在 resources 目录下
#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=10
修改配置文件
# 自定义日志打印
#logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
logMessageFormat=com.yuan.config.P6spyLogFormatStrategy
对应定义 输出类
package com.yuan.config;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import org.springframework.stereotype.Component;
/**
* p6spySQL日志格式打印
*
**/
public class P6spyLogFormatStrategy implements MessageFormattingStrategy {
/**
* 日志格式化方式(打印SQL日志会进入此方法,耗时操作,生产环境不建议使用)
*
* @param connectionId: 连接ID
* @param now: 当前时间
* @param elapsed: 花费时间
* @param category: 类别
* @param prepared: 预编译SQL
* @param sql: 最终执行的SQL
* @param url: 数据库连接地址
* @return 格式化日志结果
**/
@Override
public String formatMessage(int connectionId, String now, long elapsed,
String category, String prepared, String sql,
String url) {
return "SQL耗时【" + elapsed + "毫秒】 \n连接信息【" + url + "】 \n最终执行SQL【" + sql + "】";
}
}
输出格式
SQL耗时【5毫秒】
连接信息【jdbc:p6spy:mysql://127.0.0.1:3306/manymanygood?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=false&autoReconnect=true&serverTimezone=GMT%2B8】
最终执行SQL【select student_id,student_name,student_enrollmenttime,
student_tel,education_id,student_weight,
student_bloodtype,student_sex
from student LIMIT 10 】