最近在使用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包

希望对您有帮助!