Переход в спящий режим без входа в Log4J

#hibernate #log4j

#переход в спящий режим #log4j

Вопрос:

У меня есть приложение Tomcat, использующее режим гибернации. Когда я захожу в WEB-INF и изменяю log4j.properties на следующее…

 log4j.logger.net.sf.hibernate.SQL=trace
  

Но я ничего не вижу в файле журнала, который я использую.

 log4j.rootLogger=debug, stdout
....
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=hibernate.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  

Ведение журнала, кажется, отлично работает для моего собственного приложения.

Есть идеи?

Комментарии:

1. проверьте свой XML-файл конфигурации hibernate. Установлено ли для свойства ‘hibernate.show_sql’ значение false ?

Ответ №1:

Не уверен в этом, но я думаю, что более новые версии гибернации могут использовать slf4j вместо log4j. Вы можете обойти это, используя slf4j-log4j -bridge. Если вы используете Maven, зависимость примерно такая

     <!-- slf4j -> log4j bridge (some libraries use slf4j) -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.6</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
  

Измените версии по мере необходимости.

Комментарии:

1. Я использую… <зависимость> <Идентификатор группы> com.googlecode.sli4j</groupId> <идентификатор артефакта>sli4j-slf4j-simple</artifactId> <версия>2.0</version> </dependency>

2. Я не знаком с sli4j, но на веб-сайте написано «Никаких методов настройки не требуется, никаких специальных аннотаций, просто объявите это, и пусть sli4j сделает все остальное, окончательные и уже установленные регистраторы будут пропущены, и sli4j вообще не будет пытаться переопределить их «. . Может ли проблема в том, что регистраторы Hibernate объявлены как ‘private static final’, и в этом случае sli4j не будет внедрять свои собственные регистраторы?

3. Я попытался добавить это вместо этого, и я думаю, что это сработало при проверке x2

Ответ №2:

Попробуйте следующее, поскольку переход в спящий режим больше не подчиняется net.sf иерархии пакетов:

 log4j.logger.org.hibernate.SQL=trace
  

Комментарии:

1. Спасибо, но я использую более старую версию.

2. Я думаю, что когда спящий режим был под net.sf , он еще не использовал slf4j. Просто интересно, действительно ли вы нашли проблему.