# p6spy的基本安装
p6spy是常用的sql执行效率插件,可有效帮助开发人员进行sql效率检查及过滤
警告
强烈不建议生产环境启用p6spy
- p6spy会导致sql执行效率降低
- 由于和druid合用需要关闭druid的防火墙,容易导致安全问题
提示
环境说明:
- JDK 1.8
- SpringBoot 2.3.5.RELEASE
- JeecgBoot 3.0.0单体应用
- p6spy 3.9.1
- durid 1.1.22
- dynamic-datasource-spring-boot-starter 3.2.0
pom.xml
增加p6spy的依赖
<!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
resource
目录下增加spy.properties
文件
#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#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=2
- 修改项目的yml文件
注意
- 驱动统一设置为
com.p6spy.engine.spy.P6SpyDriver
- url的地址中间记得加入p6spy
# 如果未使用dynamic-datasource,则不需要添加下面配置
spring:
datasource:
dynamic:
p6spy: true
# 修改数据库驱动和url
xxx.driver-class-name: com.p6spy.engine.spy.P6SpyDriver
xxx.url: jdbc:p6spy:mysql://127.0.0.1:3306/rwdb?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
# p6spy与druid集成导致的启动报错
现象是提示Failed to obtain JDBC Connection: dbType not support : null
,表示经过修改的jdbc-url
无法被druid
识别。
发生的原因是druid
的wallFilter
的过滤导致
解决办法,关闭druid
的防火墙配置
# 修改前
spring.datasource.druid.filters: stat,slf4j,wall
# 修改后
spring.datasource.druid.filters: stat,slf4j
# To Be Continued!😎
← POI常见问题 企业微信开发差异记录 →