2013-05-06 12 views
14

Sto cercando di registrare il pool di connessioni per org.apache.commons.dbcp.BasicDataSource utilizzando log4jcollegamento registrazione pooling per org.apache.commons.dbcp.BasicDataSource con molla

Sto usando molla quadro per l'iniezione strato DAO.

Quando ho visto il codice all'interno di org.apache.commons.dbcp.BasicDataSource, il logger non viene utilizzato. Quindi sembra impossibile registrare il messaggio di pool per me.

Ma ancora una volta ho visto questo collegamento http://forum.springsource.org/showthread.php?38306-Connection-Pooling-debug-info.
Alcune persone stavano dicendo di mettere log4j.category.org.apache.dbcp=DEBUG. Ma non sono riuscito a trovare la risposta giusta.
Quindi la mia domanda è, può il log di pool di connessioni utilizzando log4j per org.apache.commons.dbcp.BasicDataSource?

+0

ho visto commenti simili in questo senso me stesso e non ho mai avuto fortuna ad ottenere alcun tipo di registrazione da DBCP. Il che è ovviamente piuttosto fastidioso. Sfortunatamente non sembra possibile ...: -/ – Michael

+1

Ho la stessa domanda, anche io !! Cerco di impostare la seguente configurazione nel mio log4j.xml, ma non serve. Sto usando DBCP 1.4 okwap

+1

http://stackoverflow.com/questions/3597219/logging-in-dbcp potrebbe essere utile, poiché sembra confermare che DBCP non registri. – reallynice

risposta

5

Sembra che BasicDataSource abbia solo un PrintWriter, non un Logger come variabile membro. Quindi dovresti chiamare BasicDataSource.setLogWriter (printWriter) dove printWriter sta semplicemente avvolgendo il tuo logger log4j.

mi sono imbattuto in questo: http://www.opensource.apple.com/source/JBoss/JBoss-737/jboss-all/common/src/main/org/jboss/logging/util/LoggerWriter.java

che sembra fare esattamente questo. Non conosco uno strumento in Apache Commons che faccia qualcosa di simile, ma la classe nel link qui sopra sembra che realizzerebbe ciò che stai cercando.

2

che sia troppo tardi in quanto la questione è stato chiesto, ma questo è come mi risolto il problema:

Specificare lo strumento al conducente JDBC URL

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