Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

logging connection pooling for org.apache.commons.dbcp.BasicDataSource with spring

Tags:

spring

log4j

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?

like image 388
abishkar bhattarai Avatar asked May 06 '13 09:05

abishkar bhattarai


2 Answers

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.

like image 135
Tom Hartwell Avatar answered Sep 17 '22 15:09

Tom Hartwell


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");
like image 42
spartan Avatar answered Sep 19 '22 15:09

spartan