Невозможно найти сообщения журнала c3p0

До недавнего времени мы создавали новое соединение с базой данных для каждого запроса. Каждый запрос настраивается с помощью connection.prepareStatement (query), и мы смогли записать эти запросы в наш регистратор (java.util.logging) с помощью prepareStatement.toString (). Это использовал драйвер JDBC postgresql.

Теперь мы перешли на использование c3p0 для управления пулами соединений, и, к сожалению, prepareStatement.toString () больше не возвращает подготовленный оператор запроса.

Я прочитал, что ведение журнала c3p0 можно направить в стандартное средство ведения журнала, но к сожалению, мне не удалось найти, куда идут эти сообщения. Где я могу найти эти сообщения? Консоль Glassfish 3 в NetBeans сообщает, что отладка включена.

INFO: Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]

person Mark Bouchard    schedule 03.08.2011    source источник
comment
Хорошо, чтобы прояснить вопрос - Марк пытается найти, куда идут эти журналы, что довольно просто. Но он предполагает, что c3p0 регистрирует фактические строки запроса, что на самом деле может быть не так. Это та часть, которая меня интересует (и суть награды): можно ли регистрировать сами фактические запросы из c3p0?   -  person Paul Bellora    schedule 07.08.2011


Ответы (2)


Кажется, что ведение журнала включено, как и указано в журнале (отладка? True), но если вы прочитаете поле на ссылку, которую вы указали в своем сообщении, вы найдете параметры настройки, которые следует проверить, чтобы найти нужный файл.

Если вы в конечном итоге войдете в так называемый вариант последней инстанции, он должен войти в System.Err, и это может вызвать проблему: this post сообщает, что System.Err по умолчанию не всегда отображается в любом файле журнала!

Так что продолжайте пробовать другие варианты в ранее упомянутом поле или используйте исправление в разделе ответов сообщения, которое я связал :)

person mico    schedule 06.08.2011
comment
посмотрите мой комментарий, если вы хотите добавить к своему ответу - person Paul Bellora; 07.08.2011
comment
@Mark: Есть ли у вас проблемы с получением какого-либо журнала через c3p0 или просто не видите его после метода toString ()? Если это первый случай, пожалуйста, прочтите мой ответ, в противном случае я не могу помочь, извините. - person mico; 07.08.2011
comment
@mico: Спасибо за отзыв. Я нашел журналы, которые генерирует c3p0, и смог настроить параметры конфигурации. Однако я исходил из предположения, что c3p0 будет регистрировать фактические запросы, которые он выполнял. Насколько я могу судить, даже если для уровня журнала установлено значение ВСЕ, это не так. - person Mark Bouchard; 08.08.2011

Я не уверен, что логирование c3p0 - это то, что вы действительно ищете?

Я бы рекомендовал использовать log4jdbc, который может регистрировать любые запросы JDBC (с параметрами) и даже предоставлять у вас трассировка стека, указывающая на ваш оператор JDBC / Hibernate / ..., даже если вы используете пул соединений (используйте параметр -Dlog4jdbc.debug.stack.prefix=com.mycompany.myapp). Он также может отображать информацию о времени и многое другое.

person Chris Lercher    schedule 07.08.2011
comment
Крис: хорошо, я ищу в подобной библиотеке и нашел в вашем комментарии. Спасибо! - person Jef; 09.08.2011
comment
@Chris Lercher - спасибо, это то решение, которое я искал. Помимо общих элементов запуска / выключения, c3p0, похоже, регистрирует только бесполезные вещи вроде этого: com.mchange.v2.c3p0.impl.NewProxyPreparedStatement@481e5f - person Paul Bellora; 09.08.2011