Протоколирование пула соединений для org.apache.commons.dbcp.BasicDataSource с помощью spring - программирование
Подтвердить что ты не робот

Протоколирование пула соединений для 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?

4b9b3361

Ответ 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");