15

我正在尝试记录连接池以org.apache.commons.dbcp.BasicDataSource使用 log4j

我正在使用 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吗?

4

2 回答 2

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 中有一个工具可以做类似的事情,但是上面链接中的类似乎可以完成你正在寻找的东西。

于 2014-08-04T21:25:54.593 回答
4

自从提出问题以来为时已晚,但这就是我解决问题的方法:

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

new BasicDataSource().setUrl("jdbc:mysql://localhost/DBName?logger=com.mysql.jdbc.log.Slf4JLogger&profileSQL=true");
于 2016-03-18T12:07:56.233 回答