2013-05-06 38 views
14

我嘗試使用log4j的日誌連接池org.apache.commons.dbcp.BasicDataSource彈簧

我使用DAO層注入Spring框架進行登錄連接池的org.apache.commons.dbcp.BasicDataSource

當我看到org.apache.commons.dbcp.BasicDataSource裏面的代碼時,Logger沒有被使用,所以似乎不可能爲我記錄池化消息。

但是我再次看到這個鏈接 http://forum.springsource.org/showthread.php?38306-Connection-Pooling-debug-info
有人說要把 log4j.category.org.apache.dbcp=DEBUG。但是我找不到正確的答案。
所以我的問題是,可以使用log4j連接池日誌爲org.apache.commons.dbcp.BasicDataSource

+0

我已經看到了類似的意見,這個效果我自己並且從來沒有運氣從DBCP獲取任何類型的日誌記錄。這顯然很煩人。這似乎是不可能的不幸...: -/ – Michael 2014-05-21 17:57:13

+1

我也有同樣的問題!我嘗試在log4j.xml中設置以下配置,但沒用。我使用DBCP 1.4 <記錄器名稱= 「log4j.category.org.apache.dbcp」> <電平值= 「DEBUG」/> <記錄器名稱= 「org.apache.commons.dbcp」> okwap 2014-05-22 09:40:29

+1

http://stackoverflow.com/questions/3597219/logging-in-dbcp可能很有用,因爲它似乎證實DBCP不會記錄。 – reallynice 2014-08-01 11:56:00

回答

5

BasicDataSource似乎只有一個PrintWriter,而不是Logger作爲成員變量。所以你必須調用BasicDataSource.setLogWriter(printWriter),printWriter只是簡單地包裝你的log4j記錄器。

我碰到這樣的: http://www.opensource.apple.com/source/JBoss/JBoss-737/jboss-all/common/src/main/org/jboss/logging/util/LoggerWriter.java

這似乎恰恰如此。我不知道Apache Commons中有一個類似的工具,但上面鏈接中的類似乎可以完成您正在尋找的內容。

2

爲時已晚,因爲有人問,但我這是怎麼定的問題:

指定記錄在JDBC URL司機

new BasicDataSource().setUrl("jdbc:mysql://localhost/DBName?logger=com.mysql.jdbc.log.Slf4JLogger&profileSQL=true");