2013-05-06 42 views
14

我尝试使用log4j的日志连接池org.apache.commons.dbcp.BasicDataSource弹簧

我使用DAO层注入Spring框架进行登录连接池的org.apache.commons.dbcp.BasicDataSource

当我看到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

+0

我已经看到了类似的意见,这个效果我自己并且从来没有运气从DBCP获取任何类型的日志记录。这显然很烦人。这似乎是不可能的不幸...: -/ – Michael 2014-05-21 17:57:13

+1

我也有同样的问题!我尝试在log4j.xml中设置以下配置,但没用。我使用DBCP 1.4 <记录器名称= “log4j.category.org.apache.dbcp”> <电平值= “DEBUG”/> <记录器名称= “org.apache.commons.dbcp”> okwap 2014-05-22 09:40:29

+1

http://stackoverflow.com/questions/3597219/logging-in-dbcp可能很有用,因为它似乎证实DBCP不会记录。 – reallynice 2014-08-01 11:56:00

回答

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中有一个类似的工具,但上面链接中的类似乎可以完成您正在寻找的内容。

2

为时已晚,因为有人问,但我这是怎么定的问题:

指定记录在JDBC URL司机

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