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

希望對您有幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/102962.html
標籤:其他
上一篇:Sql陳述句基礎要點總結
下一篇:mysql資料庫經典練習題
