受夠了ibatis自帶sql語句的日誌輸出,一坨的問號,直接copy出來,還不能執行,要手工替換每個問號為對應的引數。依照google法則,嗯,發現乙個可以自動將sql的問號替換為實際引數並進行日誌輸出的工具--p6spy。
沒的說,download,依照使用手冊,把p6spy.jar放到lib目錄,p6spy.properties放到classes目錄。對原jdbc驅動源進行相應的配置,改為driverclassname = com.p6spy.engine.spy.p6spydriver。
開始執行,吼吼,似乎還不錯,自動生成spy.log檔案,裡面一坨的日誌,重要的是sql終於是可執行的了。
但……還是不夠,我想在控制台也看到,嗯,看p6spy.properties選項配置,有三種日誌方式:
預設用的是filelogger方式,當仁不讓,改為log4jlogger,再次執行……哎,這回不行了,因為我的系統用的日誌系統是slf4j+logback,昏厥ing……
嗯,不錯,看樣子改動不會很大,log4jlogger原始碼也才幾十行,重要的是實現了p6logger介面,這就簡單了,自建乙個類,實現p6logger介面,就一切搞定了,廢話不說,上原始碼:
除了實現p6logger介面外,還對輸出的sql做了去除空格的格式化工作,主要是我用的ibatis定義的sql語句是基於xml的,為了美觀,用了大量的縮排,太多的空格和換行,另外,預設p6spy是輸出resultset的內容的,這對除錯非常不方便,需要知道查詢返回的結果,我直接把sql複製出來執行不就完了,所以,logsql函式對resultset做了過濾判斷,如果是resultset,就不輸出。
編譯、執行,o my god,太酷了,我不得不佩服我自己,這麼天才的想法,都能想出來,這個類,簡直就是為我定製的,你說,我能不佩服自己嗎?
得,好東西,當然不能私藏,放出來大家共享一把。
p6spy安裝使用 tomcat
有時候在hibernate除錯中,因為需要觀察到sql語句及其變數,可能會使用到p6spy這個工具類,安裝步驟如下 1.拷貝p6spy.jar包到 tomcat home common lib 下面,或者自己的工程的lib下面。2.拷貝spy.properties到工程的classes下面,使得應用...
Spring使用p6spy監控sql
2.將p6spy.jar放到應用的lib目錄下,將spy.properties放到web inf classes目錄下 3.修改spy.properties樣本的第41行,使用oracle驅動,封閉預設的mysql驅動 oracle driver realdriver oracle.jdbc.dri...
P6Spy 監控JDBC詳細配置說明
1 解壓出p6spy.jar 和 spy.properties兩個檔案 2 將p6spy.jar 放入應用程式的web inf lib目錄,將spy.properties放入web inf classes目錄 也就是工程的src下面 3 修改spy.properties realdriver com...