今天調整一個老版本系統,由於是幾年前的架構,瞭解比較詳細的人已經比較少,調試有點困難,一個許可權管理系統中像關聯的表比較多,而所有代碼已經打成了jar包,找不到源碼,沒法查看其中SQL語句,但是確定原因應該就是資料錯誤造成,需要找到模組對應的資料庫表以及關係才能查出問題。
上網搜了一下可以使用p6spy在控制台或記錄檔中輸出程式執行的SQL資訊,而且對於目前簡單的需求配置非常簡單。
1.上網下載一個p6spyinstall.jar,解壓縮後能找到spy.properties與p6spy.jar兩個檔案。
對於tomcat5.5的版本
將spy.properties 放在{TomcatHome}/common/classes 檔案夾
將p6spy.jar is 放在 {TomcatHome}/common/lib 檔案夾
對於tomcat6的版本將兩個檔案都放在{TomcatHome}/lib 檔案夾下
2.修改程式中定義資料來源或資料庫連接的位置:更改其中使用的<driverName />一般oracle應該如下:
<driverName>oracle.jdbc.driver.OracleDriver</driverName>
修改為:
<driverName>com.p6spy.engine.spy.P6SpyDriver</driverName>
3.修改spy.properties檔案中的配置:
修改為realdriver=oracle.jdbc.driver.OracleDriver
以下部分前面不帶井號的為有效:
#specifies the appender to use for logging
#appender=com.p6spy.engine.logging.appender.Log4jLogger //使用log4j輸出sql
appender=com.p6spy.engine.logging.appender.StdoutLogger //使用控制台輸出
#appender=com.p6spy.engine.logging.appender.FileLogger //輸出到記錄檔,另外有一個配置具體的輸出檔案的名字預設是spy.log
修改完後,重新啟動應用,就可以看到所有執行的SQL了,更詳細的配置可以參考:
http://wenku.baidu.com/view/b68719126edb6f1aff001fb0.html