Протоколирование пула соединений для org.apache.commons.dbcp.BasicDataSource с помощью spring
Я пытаюсь зарегистрировать пул соединений для 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
?
Ответы
Ответ 1
Похоже, что BasicDataSource имеет только PrintWriter, а не Logger как переменную-член. Поэтому вам придется вызывать BasicDataSource.setLogWriter(printWriter), где printWriter просто обертывает ваш log4j logger.
Я наткнулся на это:
http://www.opensource.apple.com/source/JBoss/JBoss-737/jboss-all/common/src/main/org/jboss/logging/util/LoggerWriter.java
который, похоже, делает именно это. Я не знаю инструмент в Apache Commons, который делает что-то подобное, но класс в ссылке выше кажется, что он выполнит то, что вы ищете.
Ответ 2
Слишком поздно, так как вопрос был задан, но именно так я исправил проблему:
Укажите регистратор для драйвера в URL-адрес JDBC
new BasicDataSource().setUrl("jdbc:mysql://localhost/DBName?logger=com.mysql.jdbc.log.Slf4JLogger&profileSQL=true");