Журнал Hibernate 4 Wildfly 8 не работает

Как мне заставить спящий режим 4 входить в систему через логбэк? У меня развернута война в wildfly 8 final, и я использую slf4j с логбэком. Настройка ведения журнала в приложении работает на 100%, причем как консольный, так и файловый приложения работают должным образом.

Вот что я сделал для работы slf4j + logback:

Исключена подсистема журналирования с jboss-deployment-structure.xml в WEB-INF:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

Включены зависимости slf4j и logback в pom:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.6</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.1</version>
</dependency>

Вход в приложение с помощью org.slf4j.Logger

В logback.xml добавлены 3 логгера:

<logger name="my.package" level="TRACE"/>
<logger name="org.hibernate.type" level="ALL" />
<logger name="org.hibernate" level="TRACE" />

Я не вижу в журналах ничего, связанного с переходом в спящий режим.

Единственный раз, когда я вижу что-то из спящего режима, - это когда я добавляю в свой persistence.xml:

<properties>
    <property name="hibernate.show_sql" value="true"/>
    <property name="hibernate.format_sql" value="true"/>
</properties>

Но он регистрируется в журнале сервера и консоли, а не в моих приложениях возврата, даже если мой корневой регистратор настроен на трассировку. . .

Logback ViewStatusMessagesServlet выглядит исправным и показывает зарегистрированные регистраторы гибернации: 2014-02-23 19:02:37 INFO LoggerAction Уровень установки регистратора [org.hibernate.type] на ВСЕ

2014-02-23 19:02:37 INFO LoggerAction Установка уровня логгера [org.hibernate] на TRACE

Я также могу зарегистрировать подготовленный оператор с помощью hibernate.ejb.interceptor, зарегистрированного в persistence.xml. К сожалению, это также не предоставляет никакого метода для получения параметров запроса.

Может кто-нибудь мне помочь?


person Sphynx    schedule 23.02.2014    source источник


Ответы (1)


Поскольку Hibernate не является частью вашего развертывания и является частью сервера, он не может использовать конфигурацию возврата в систему в вашем развертывании. Hibernate всегда будет использовать конфигурацию журналирования серверов. Обычно это находится в подсистеме ведения журнала, но в случае удаления управляется файлом logging.properties в каталоге конфигурации.

Возможно, можно будет настроить сервер, по крайней мере, автономный, а не домен, для использования логбэка. Я не пробовал это сделать, и это потребует некоторой работы. Вам нужно будет убедиться, что модуль jboss-logmanager не загружается модулями JBoss при загрузке и что логбэк загружается. Опять же, это может сработать, а может и не сработать :) Если вы это сделаете, вы потеряете все возможности управления для настройки ведения журнала, например включение ведения журнала отладки.

person James R. Perkins    schedule 24.02.2014
comment
Я закончил тем, что добавил регистраторы в свой файл standalone-full.xml в каталоге конфигурации (обратите внимание, что я использую автономный полный профиль для dev), что не на 100% удовлетворено, так как этот журнал переводит в спящий режим для всех приложений, но пока все в порядке. . . - person Sphynx; 03.03.2014
comment
Я попытался установить свойство системы org.jboss.logging.provider = slf4j, как указано здесь: docs.jboss.org/hibernate/orm/4.3/topical/html/logging/, и я получаю java.lang.NoClassDefFoundError: org / slf4j / LoggerFactory. Не должно быть так сложно записать сообщение Hibernate в мой собственный файл, не так ли? - person alex; 10.07.2014
comment
Вы используете логбэк в качестве менеджера логов? Из-за ошибки создается впечатление, что slf4j отсутствует на пути к вашему классу. - person James R. Perkins; 10.07.2014