p6spy 下載 及配置說明


摘自: http://momo119.iteye.com/blog/1575143

p6spy 下載地址:  http://sourceforge.net/projects/p6spy/?source=dlp

p6spy 組件,它可以攔截所有執行的 SQL 語句,而不管你使用的是什么 ORM 框架。對於 PrepareStatement 那樣帶參數(?) 的語句,它會幫你代上相應的參數值。 

  p6spy 的主頁是http://sourceforge.net/projects/p6spy/,它支持當前流行的應用服務器,如 JBoss、Orion、Tomcat、WebLogic、WebSphere 等,將spy.properties和p6spy.jar,拷貝到classes根目錄和lib目錄就可以了,其實不用太在意 p6spy 的安裝說明,關鍵是要了解了某個應用服務器本身,要搞清楚的一個問題是“誰在加載 p6spy 包,從哪里加載”,那么配置 p6spy 就不成問題了,你甚至可以把 p6spy 用在獨立的 Java 應用程序中。 

  p6spy 可以輸出日志到文件中、控制台、或者傳遞給 Log4j,而且還能配搭 SQL Profiler 或 IronTrackSQL 圖形化監控 SQL 語句,監測到哪些語句的執行是耗時的,逐個優化。關於與 SQL Profiler 或 IronTrackSQL 的配合使用可參數文件的鏈接。 



如果在你的應用程序啟動后,卻在 spy.log 文件中發現了如下的提示信息,那就是驅動程序加載先后的問題了。 

<你的程序的數據庫驅動名稱> is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting'deregisterdrivers' to true in spy.properties 



請把 spy.properties 配置文件里的 

deregisterdrivers=false 

改為 

deregisterdrivers=true 

,重新運行即可。 

這是因為有些應用系統中會先於 P6Spy 加載了真正的數據庫的驅動程序,導致 P6Spy 無法監控到,設置 
deregisterdrivers 

為 true ,是顯式地把真正的數據庫的驅動程序進行反注冊掉,而采用 P6Spy 的驅動程序。 



下表列出了 spy.properties 配置文件中的各配置項的名稱、默認值及其意義和相關注意事項: 
配置項名稱 默認值 配置項意義及相關注意事項 
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 數據源的一些定制信息,以分號分隔。 

1.在log4j配置文件里加上 
log4j.logger.org.hibernate.type=DEBUG,CONSOLE 
就可以看到被綁定的各個參數的值。 

2.用 P6Spy。 

3.用proxool。 
配置org.logicalcobwebs.proxool.admin.servlet.AdminServlet 
然后在web界面察看sql。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM