springboot 設定 P6spy

2020-09-21 22:23:32

最近在使用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.logcom.p6spy.engine.logging. P6LogFactory用來攔截和記錄任務應用程式的 JDBC 語句。若無設定或註釋掉則無此功能。
module.outagecom.p6spy.engine.outage. P6OutageFactory檢測和記錄執行時間比較長的 SQL 語句。若無設定或註釋掉則無此功能。
realdriver 真正的應用系統應用的資料庫驅動程式名稱。
realdriver2 真正的應用系統應用的第二種備用資料庫驅動程式名稱。
realdriver3 真正的應用系統應用的第三種備用資料庫驅動程式名稱。
deregisterdriversfalse顯示地把真正的資料庫的驅動程式停止反註冊掉。取值 true| false
executionthreshold P6Log 模組執行時間設定,整數值 (以毫秒為單位),只有當超過這個時間才停止記錄 Log。
outagedetectionfalseP6Outage 模組是否記錄較長時間執行的語句。取值 true| false
outagedetectioninterval P6Outage 模組執行時間設定,整數值 (以秒為單位)),只有當超過這個時間才停止記錄 Log。
filterfalse是否過濾 Log,取值 true| false
include 過濾 Log 時所包含的表名列表,以逗號分隔。
exclude 過濾 Log 時所排除的表名列表,以逗號分隔。
sqlexpression 過濾 Log 時的 SQL 表示式名稱
autoflushtrue是否自動重新整理。取值 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
stacktracefalse列印堆疊跟蹤資訊。取值 true| false
stacktraceclass 如果 stacktrace=true,則可以指定具體的類名來停止過濾。
reloadpropertiesfalse監測屬性組態檔是否停止重新載入。取值 true| false
reloadpropertiesinterval60屬性組態檔重新載入的時間間隔,以秒為單位。
useprefixfalse是否加上字首,設定為 true,會加上 p6spy: 作為字首。取值 true| false
appendercom.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
logfilespy.log指定 Log 的檔名,任何適於作業系統的檔案。
appendtrue指定是否每次是增加 Log,設定為 false 則每次都會先停止清空。取值 true| false
log4j.appender.STDOUTorg.apache.log4j.ConsoleAppender當 appender 為 log4j 時採用的設定,設定如同 Log4J 的相關設定。
log4j.appender.STDOUT.layoutorg.apache.log4j.PatternLayout同上
log4j.appender.STDOUT. layout.ConversionPatternp6spy - %m%n同上
log4j.logger.p6spyINFO,STDOUTLog 級別的設定,取值同 Log4J 的設定
realdatasource 設定資料來源 DataSource 的設定名稱。
realdatasourceclass 設定資料來源 DataSource 的類的全稱。
realdatasourceproperties 設定資料來源 DataSource 的屬性,以分號分隔。
jndicontextfactory 設定 JNDI 資料來源的 NamingContextFactory。
jndicontextproviderurl 設定 JNDI 資料來源的提供者的 URL。
jndicontextcustom 設定 JNDI 資料來源的一些客製化資訊,以分號分隔。

第六步:請關注下面的公眾號回覆P6spy,即可下載 P6spy的zip包

希望對您有幫助!