Управление журналом гибернации - PullRequest
1 голос
/ 08 января 2010

Я получил приложение, работающее в контейнере jboss, используя hibernate. Однако у меня возникли проблемы с журналированием, которое делает Hibernate. Я получаю эти сообщения при запуске, когда Hibernate инициализируется:

2010-01-08 17:23:42,017 INFO  [Configuration:1403] - Configuration resource: /hibernate.cfg.xml
2010-01-08 17:23:42,070 INFO  [Configuration:1541] - Configured SessionFactory: null

И так далее. Однако я бы хотел избавиться от них, потому что это бесполезная информация. У меня есть следующая конфигурация в моем log4j.properties:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%c{1}:%L] - %m%n

log4j.rootCategory = error, stdout

# Hibernate
log4j.logger.org.hibernate=error
log4j.logger.org.hibernate.tool.hbm2ddl=fatal

Как вы можете видеть, логирование соответствует формату, указанному в моем ConversionPattern . Однако я все еще получаю сообщения INFO. Я также использую Asterisk-Java API :

# Asterisk java
log4j.logger.org.asteriskjava=error

Это работает правильно, так как я получаю только ошибки:

2010-01-08 17:31:46,948 ERROR [AgiConnectionHandler:156] - AgiException running AgiScript com.**** on Asterisk-Java DaemonPool-1-thread-2 org.asteriskjava.fastagi.AgiException: Number is on blacklist

так что я сейчас немного растерялся.

Обновление

При запуске контейнера с

-Dlog4j.debug

Я получаю:

log4j: Reading configuration from URL jar:file:*******.jar!/log4j.properties
log4j: Parsing for [root] with value=[error, stdout].
log4j: Level token is [error].
log4j: Category root set to ERROR
log4j: Parsing appender named "stdout".
log4j: Parsing layout options for "stdout".
log4j: Setting property [conversionPattern] to [%d %-5p [%c{1}:%L] - %m%n].
log4j: End of parsing for "stdout".
log4j: Parsed "stdout" options.
log4j: Parsing for [org.hibernate.tool.hbm2ddl] with value=[error].
log4j: Level token is [error].
log4j: Category org.hibernate.tool.hbm2ddl set to ERROR
log4j: Handling log4j.additivity.org.hibernate.tool.hbm2ddl=[null]
log4j: Parsing for [org.hibernate] with value=[fatal].
log4j: Level token is [fatal].
log4j: Category org.hibernate set to FATAL
log4j: Handling log4j.additivity.org.hibernate=[null]
log4j: Parsing for [org.asteriskjava] with value=[error].
log4j: Level token is [error].
log4j: Category org.asteriskjava set to ERROR
log4j: Handling log4j.additivity.org.asteriskjava=[null]
log4j: Finished configuring.

Другие файлы не загружаются. Поэтому мне интересно, почему это не работает. Также я попробовал следующее перед созданием фабрики сессий:

Logger.getLogger("org.hibernate").setLevel(Level.ERROR);

Нет успеха либо ...

1 Ответ

1 голос
/ 08 января 2010

Похоже, что другая конфигурация регистрации может где-то переопределить вашу. Возможно, вы захотите попробовать добавить системную переменную -Dlog4j.debug в путь запуска вашего контейнера, чтобы log4j распечатал отладочную информацию, которая точно скажет вам, какой файл он использует для настройки. Возможно, вместо вашего используется другой файл в пути к классам.

Кроме того, вы действительно не должны использовать% L в любой производственной среде - Javadoc явно предупреждает об этом :

% L:
Используется для вывода номера строки, из которой был отправлен запрос на регистрацию.
ПРЕДУПРЕЖДЕНИЕ Генерирование информации о местоположении вызывающего абонента происходит очень медленно. Следует избегать его использования, если скорость выполнения не является проблемой.

...