最近在使用springboot配置sql打印信息时,玩了玩 P6spy,感觉还不错,可以很方便的查找sql语句的错误,能快速地定位到相应的语句,配置后的打印信息为:
2020-09-20 11:47:34.539 INFO 343736 --- [nio-8888-exec-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
11:47:34,583|24|statement|connection 0|url jdbc:p6spy:mysql://localhost:3306/hah|SELECt * FROM user|SELECt * FROM user
11:48:06,624|1|statement|connection 0|url jdbc:p6spy:mysql://localhost:3306/hah|SELECt * FROM user|SELECt * FROM user
P6spy相关的jar包及配置文件在文章末尾,接下来就对配置步骤进行讲解:
第一步:配置pom.xml文件
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.8.7</version>
</dependency>
第二步:将spy.properties文件放置在resources的根目录下
第三步:对spy.properties文件进行更改,因为我数据库用的mysql,所以用oracle的朋友自己再改一下哈
driverlist=com.mysql.jdbc.Driver
appender=com.p6spy.engine.spy.appender.StdoutLogger
appender=true
dateformat=hh:mm:ss,SSS
第四步:修改自己的驱动信息
#下面的是包含p6spy格式的驱动链接信息
spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver
spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/hah
spring.datasource.username=root
spring.datasource.password=123456
第五步:重新启动项目就可以了。 P6spy相关的其他配置信息如下,自己有选择的进行更改哈
配置项名称 | 默认值 | 配置项意义及相关注意事项 |
---|---|---|
module.log | com.p6spy.engine.logging. P6LogFactory | 用来拦截和记录任务应用程序的 JDBC 语句。若无配置或注释掉则无此功能。 |
module.outage | com.p6spy.engine.outage. P6OutageFactory | 检测和记录执行时间比较长的 SQL 语句。若无配置或注释掉则无此功能。 |
realdriver | 真正的应用系统应用的数据库驱动程序名称。 | |
realdriver2 | 真正的应用系统应用的第二种备用数据库驱动程序名称。 | |
realdriver3 | 真正的应用系统应用的第三种备用数据库驱动程序名称。 | |
deregisterdrivers | false | 显示地把真正的数据库的驱动程序停止反注册掉。取值 true| false |
executionthreshold | P6Log 模块执行时间设置,整数值 (以毫秒为单位),只有当超过这个时间才停止记录 Log。 | |
outagedetection | false | P6Outage 模块是否记录较长时间运行的语句。取值 true| false |
outagedetectioninterval | P6Outage 模块执行时间设置,整数值 (以秒为单位)),只有当超过这个时间才停止记录 Log。 | |
filter | false | 是否过滤 Log,取值 true| false |
include | 过滤 Log 时所包含的表名列表,以逗号分隔。 | |
exclude | 过滤 Log 时所排除的表名列表,以逗号分隔。 | |
sqlexpression | 过滤 Log 时的 SQL 表达式名称 | |
autoflush | true | 是否自动刷新。取值 true| false |
dateformat | 设置时间的格式,也就是用 Java 的 SimpleDateFormat 程序。 | |
includecategories | 显示指定过滤 Log 时包含的分类列表,取值为 error,info,batch,debug,statement,commit,rollback,result 的各种组合。 | |
excludecategories | 显示指定过滤 Log 时排队的分类列表,取值同上。 | |
stringmatcher | 应用正则表达式来过滤 Log,取值为 com.p6spy.engine.common.GnuRegexMatcher 和 com.p6spy.engine.common.JakartaRegexMatcher | |
stacktrace | false | 打印堆栈跟踪信息。取值 true| false |
stacktraceclass | 如果 stacktrace=true,则可以指定具体的类名来停止过滤。 | |
reloadproperties | false | 监测属性配置文件是否停止重新加载。取值 true| false |
reloadpropertiesinterval | 60 | 属性配置文件重新加载的时间间隔,以秒为单位。 |
useprefix | false | 是否加上前缀,设置为 true,会加上 p6spy: 作为前缀。取值 true| false |
appender | com.p6spy.engine.logging. appender.FileLogger | 指定 Log 的 appender,与 Log4J 有点同义,取值:com.p6spy.engine.logging.appender.Log4jLogger、com.p6spy.engine.logging.appender.StdoutLogger 和 com.p6spy.engine.logging.appender.FileLogger |
logfile | spy.log | 指定 Log 的文件名,任何适于操作系统的文件。 |
append | true | 指定是否每次是增加 Log,设置为 false 则每次都会先停止清空。取值 true| false |
log4j.appender.STDOUT | org.apache.log4j.ConsoleAppender | 当 appender 为 log4j 时采用的配置,配置如同 Log4J 的相关配置。 |
log4j.appender.STDOUT.layout | org.apache.log4j.PatternLayout | 同上 |
log4j.appender.STDOUT. layout.ConversionPattern | p6spy - %m%n | 同上 |
log4j.logger.p6spy | INFO,STDOUT | Log 级别的设置,取值同 Log4J 的配置 |
realdatasource | 设置数据源 DataSource 的配置名称。 | |
realdatasourceclass | 设置数据源 DataSource 的类的全称。 | |
realdatasourceproperties | 设置数据源 DataSource 的属性,以分号分隔。 | |
jndicontextfactory | 设置 JNDI 数据源的 NamingContextFactory。 | |
jndicontextproviderurl | 设置 JNDI 数据源的提供者的 URL。 | |
jndicontextcustom | 设置 JNDI 数据源的一些定制信息,以分号分隔。 |
第六步:请关注下面的公众号回复P6spy,即可下载 P6spy的zip包
希望对您有帮助!