I am trying to log connection pooling for org.apache.commons.dbcp.BasicDataSource
using log4j
I am using spring framework for dao layer injection.
When I saw code inside org.apache.commons.dbcp.BasicDataSource
, Logger is not used .So it seems impossible to log pooling message for me.
But again I saw this link
http://forum.springsource.org/showthread.php?38306-Connection-Pooling-debug-info.
Some people were saying to put
log4j.category.org.apache.dbcp=DEBUG
. But I could not find the right answer.
So my question is, can connection pooling log using log4j for org.apache.commons.dbcp.BasicDataSource
?
It seems that BasicDataSource only has a PrintWriter, not a Logger as a member variable. So you'd have to call BasicDataSource.setLogWriter(printWriter) where the printWriter is simply wrapping your log4j logger.
I came across this: http://www.opensource.apple.com/source/JBoss/JBoss-737/jboss-all/common/src/main/org/jboss/logging/util/LoggerWriter.java
which seems to do exactly that. I don't know of a tool in Apache Commons that does something similar, but the class in the link above seems like it would accomplish what you are looking for.
Its too late since the question was asked but this is how I fixed the issue:
Specify the logger to the driver in JDBC URL
new BasicDataSource().setUrl("jdbc:mysql://localhost/DBName?logger=com.mysql.jdbc.log.Slf4JLogger&profileSQL=true");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With