Изменение уровня ведения журнала Hibernate SQL в Logback во время выполнения через JMX - PullRequest
1 голос
/ 26 июля 2011

Я настроил Hibernate для использования библиотеки журналов входа в систему.И создал appender, который перехватывает данные журналов из регистраторов org.hibernate.SQL и org.hibernate.type.По умолчанию они установлены на уровень INFO.

В качестве следующего шага я пытаюсь изменить уровень этих 2-х регистраторов до уровня DEBUG, используя JMX-интерфейс logback.Но это не работает и файл журнала не содержит данных.Только если я установлю уровень ведения журнала на DEBUG в файле конфигурации, а затем перезапущу сервер, он будет работать.

Должен ли я сделать что-нибудь дополнительное для того, чтобы Hibernate начал регистрировать?

Вот конфигурация appender / logger:

<configuration debug="false" scan="true" scanPeriod="5 minutes"> 

  <jmxConfigurator />

  ...

  <property name="SQL_LOG_LEVEL" value="DEBUG" />

  <appender name="SQL_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
     <file>${LOG_DIRECTORY}/sql_${weblogic.Name}.log</file>
     <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>${ROTATION_DIRECTORY}/sql_${weblogic.Name}.%i.log.zip</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>5</maxIndex>
     </rollingPolicy>
     <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>50MB</maxFileSize>
     </triggeringPolicy>
     <encoder>
        <pattern>${LOG_PATTERN}</pattern>
     </encoder>
  </appender>   

  <logger name="org.hibernate.SQL" level="${SQL_LOG_LEVEL}" additivity="false">
      <appender-ref ref="SQL_LOG" />  
  </logger>

  <logger name="org.hibernate.type" level="${SQL_LOG_LEVEL}" additivity="false">
      <appender-ref ref="SQL_LOG" />  
  </logger>                           

     ...

</configuration>

EDIT : У меня есть несколько файлов приложений (EAR), развернутых в одном контейнере.Все приложения используют одинаковую конфигурацию регистрации.

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Проблема, по-видимому, в том, что я развернул несколько приложений на одном сервере, и, по сути, загрузчик классов каждого приложения имеет копию библиотек logback. Вот почему создается несколько контекстов журналирования, но поскольку все они имеют одно и то же имя («по умолчанию»), в основном, только один регистрируется на сервере MBean.

Решением может быть либо перемещение библиотек журналирования выше в иерархии загрузчика классов, либо использование разделения контекста регистратора, как предложено в документации журнала .

0 голосов
/ 27 июля 2011

Мне не удалось записать какой-либо вывод из org.hibernate.SQL и друзей, пока я не установил уровень ведения журнала TRACE вместо DEBUG, используя logback over slf4j.

...