#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. Просто интересно, действительно ли вы нашли проблему.