《SpringBoot2.0 实战》系列-整合p6spy实现sql打印日志功能

前言

sql日志打印功能,在开发中很实用,直接将日志sql拷贝到数据库执行,就能很快发现问题。最近项目中也需要用到这个功能,所以记录此文mark下。

整合

引入相关依赖

<!--p6spy 打印sql-->
<dependency>
    <groupId>com.github.gavlyukovskiy</groupId>
    <artifactId>p6spy-spring-boot-starter</artifactId>
    <version>1.6.2</version>
</dependency>

编写spy.properties配置文件,此处提供我的版本。

#MODULE p6spy提供了两种模块进行日志记录:log和outage,两者有不同的功能,配置参数也有专属,但是它们也共享一些配置参数,如哪些表被记录,日志文件名称和地址,是否显示sql执行轨迹等。
#log用来拦截和记录任何使用jdbc的应用的数据库声明日志,默认为开启。
#outage主要是用来最低化log所带来的性能问题,只记录超过一定时间的执行语句,默认为关闭。
module.log=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory
module.outage=com.p6spy.engine.outage.P6OutageFactory
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#实际的数据库驱动,真正的数据库驱动
#realdriver=com.mysql.jdbc.Driver
#实际的数据库驱动备份,当前面的数据库驱动不对时,顺序查找下一驱动,直到找到合适为止,默认为空。
#realdriver2=
#realdriver3=
#无效化已注册的驱动,如果在其他地方已经定义好了真正的数据库驱动,那么p6spy driver就不会生效,也就不能起到作用,所以需#要把此选项置为true。
deregisterdrivers=true
#log模块专属的参数,当log模块开启时,如果执行语句超出这个时间(单位为毫秒),才能被记录在文件中,可以重新被载入,默认为0。
executionthreshold=
#outage专属的参数,当outage模块开启时,outagedetection为true时,会根据outagedetectioninterval(单位为秒)的大小, 间隔的去捕获执行语句,一般用来捕获长时间执行的语句。。
outagedetection=true
outagedetectioninterval=2
#以下参数是公共的属性,log和outage都可以公用的参数过滤器开关,是否根据参数过滤一些记录内容
filter=true
#当过滤器开启时,需要记录的表,默认为都记录
#include=
#当过滤器开启时,不需要记录的表,默认为都记录
exclude= foreign_key_checks,variable_name,GET_LOCK,RELEASE_LOCK,flyway_schema_history,information_schema,@,SELECT DATABASE(),SELECT version(),ACT_,QRTZ_
# 过滤 Log 时的 SQL 正则表达式名称  默认为空
#当过滤器开启时,根据sql表达式过滤
#sqlexpression =
#是否自动刷新
autoflush   = true
#输出的日志文件的日期格式,也就是用Java的SimpleDateFormat程序。
dateformat= yyyy-MM-dd HH:mm:ss
#定义包含的日志级别,当日志级别属于此类型时,才能被记录,属性值有error, info, batch, debug, statement, commit, rollback 和result
#includecategories=statement
#定义不包含的日志级别,当日志级别属于此类型时,不会被记录;
#可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
#使用正则表达式来过滤 Log,匹配时才会被记录,例如: #stringmatcher=com.p6spy.engine.common.GnuRegexMatcher #stringmatcher=com.p6spy.engine.common.JakartaRegexMatcher
#stringmatcher=
#是否对每一SQL的执行语句进行打印堆栈跟踪信息,通常在进行长时间执行SQL的情况下打开进行监控。
stacktrace=false
#当上一轨迹开关打开时,可以指定具体的类名来进行过滤。
stacktraceclass =
#监测属性配置文件是否进行重新加载,一般应用服务器在启动时进行加载一次就够了。
reloadproperties=false
#当是否重新加载开关打开时,定义重新加载时间周期。
reloadpropertiesinterval = 60
#是否加上前缀,设置为 true,会加上 p6spy: 作为前缀
useprefix=false
#指定 Log 的 appender,与 Log4J 有点同义,取值:com.p6spy.engine.logging.appender.Log4jLogger com.p6spy.engine.logging.appender.StdoutLogger com.p6spy.engine.logging.appender.FileLogger
# 日志只输出到控制台,不会记录到日志文件
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger

#指定记录的日志文件名称和地址,根目录在应用服务器的发布端.如tomcat在%TOMCAT_HOME%/bin目录下。
logfile = ./logs/spy.log
#文件续载标识,在log的appender类型为FileLogger时,才生效,如果为true,则在生成的日志文件后面继续进行记录,否则删除之前的内容。
#append=true
#类似与log4j的记录器的布局:
#log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
#log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
#log4j.appender.STDOUT.layout.ConversionPattern=p6spy - #%m%n

yml中增加启用开关,不同环境不同配置。

# p6spy sql打印
decorator:
  datasource:
    enabled: true # 是否启用

测试结果

在这里插入图片描述

摘自本人的开源项目cloud-plus:https://blog.csdn.net/HXNLYW/article/details/104635673

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值