问题
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?
回答1:
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.
回答2:
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");
来源:https://stackoverflow.com/questions/16395608/logging-connection-pooling-for-org-apache-commons-dbcp-basicdatasource-with-spri