Я не смог получить больше консольного вывода (чтобы помочь с отладкой) из Hibernate, несмотря на то, что у него есть несколько свойств в файле hibernate.cfg.xml
. Например, добавление строки <property name="show_sql">true</property>
фактически не отображало операторы SQL в консоли.Как получить больше отладочных сообщений из Hibernate?
Я также попытался сыграть с содержимым файла log4j.properties
, подобного файлу log4j.logger.org.hibernate=debug
- не повезло. Что мне не хватает?
Edit: содержимое файла гибернации-service.xml являются
<server>
<mbean code="org.jboss.hibernate.jmx.Hibernate"
name="jboss.har:service=Hibernate_SMS">
<attribute name="DatasourceName">java:/SMS_DS</attribute>
<attribute name="Dialect">org.hibernate.dialect.HSQLDialect</attribute>
<attribute name="SessionFactoryName">java:/hibernate/SessionFactory</attribute>
<attribute name="CacheProviderClass">org.hibernate.cache.HashtableCacheProvider</attribute>
<attribute name="ShowSqlEnabled">true</attribute>
</mbean>
</server>
Я не 100% уверен, что это на самом деле имеет никакого эффекта, хотя. Этот XML-файл находится в проекте Eclipse, который обрабатывает мои базы данных, но, похоже, не находится в каталоге развертывания JBoss.
Edit 2: Это, безусловно, развертывается как HAR. Тем не менее, я уверен, что мне нужно hibernate.cfg.xml
. Я помню, что у меня были проблемы, когда документ сопоставления был опущен как запись в этом файле. Я думаю, что HAR генерируется с помощью муравей - есть цель для этого в файле build.xml:
<target name="har" depends="prepare" description="Builds the Hibernate HAR file">
<mkdir dir="${class.root}" />
<mkdir dir="${distribution.dir}" />
<jar destfile="${distribution.dir}/${har.name}">
<!-- include the hbm.xml files -->
<fileset dir="${class.root}">
<include name="**/*.hbm.xml"/>
<include name="com/[redacted]/sms/data/dto/*.class"/>
<include name="com/[redacted]/sms/data/dto/base/*.class"/>
</fileset>
<!-- include jboss-service.xml -->
<metainf dir="${hibernate.dir}">
<include name="hibernate-service.xml"/>
</metainf>
</jar>
</target>
но когда я делаю муравьев строить с неправильно сформированным XML в файле гибернации-service.xml, его не терпит неудачу. Обновление Даже удаление файла полностью не приводит к сбою сборки. Есть идеи? End Update
Это звучит, как получить Hibernate для заявлений вывода SQL должен (если все настроено правильно) заботиться о нем целиком - это значит, что параметры в log4j.properties не будет делать разницы здесь? - потому что на самом деле делает изменить выход при запуске муравей.
Edit 3: После запуска в другие странные вопросы, с моими данными har
, я удалил файл HAR целиком и перестроил его, используя цель Ant сборки har
. Вдруг все работает! Благодаря шахматной игре за его потрясающую полезность. Не могу сказать, что я точно знаю, что это сделал в конце, но я бы скорее признал его усилия, а не написал и принял свой собственный ответ; Приносим извинения, если вы не «он».
'hibernate.show_sql' (или,' ShowSqlEnabled' в JBoss MBean) не зависит от конфигурации протоколирования; если он включен, он всегда будет печатать SQL для консоли. Установка 'org.hibernate.SQL = DEBUG' в соответствующей конфигурации регистратора будет делать то же самое, но независимо от того, какой выход настроен для регистратора. Оба метода не зависят друг от друга (например, если вы установили оба значения, вы дважды получите sql) – ChssPly76