使用spring记录org.apache.commons.dbcp.BasicDataSource的连接池

时间:2013-05-06 09:19:06

标签: spring log4j

我正在尝试使用log4j

记录org.apache.commons.dbcp.BasicDataSource的连接池

我使用spring框架进行dao层注入。

当我在org.apache.commons.dbcp.BasicDataSource内看到代码时,没有使用Logger。因此,似乎无法为我记录池信息。

但我又看到了这个链接 http://forum.springsource.org/showthread.php?38306-Connection-Pooling-debug-info
有人说要放 log4j.category.org.apache.dbcp=DEBUG。但我找不到正确的答案 所以我的问题是,可以使用log4j为org.apache.commons.dbcp.BasicDataSource连接汇集日志吗?

2 个答案:

答案 0 :(得分:5)

似乎BasicDataSource只有一个PrintWriter,而不是一个Logger作为成员变量。所以你必须调用BasicDataSource.setLogWriter(printWriter),其中printWriter只是包装你的log4j记录器。

我遇到了这个: http://www.opensource.apple.com/source/JBoss/JBoss-737/jboss-all/common/src/main/org/jboss/logging/util/LoggerWriter.java

这似乎正是如此。我不知道Apache Commons中的一个工具做了类似的事情,但上面链接中的类似乎可以完成你想要的。

答案 1 :(得分:4)

自提出问题以来已经太迟了,但这是我解决问题的方法:

在JDBC URL中指定驱动程序的记录器

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