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

爱⌒轻易说出口 提交于 2020-01-01 04:22:27

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!