Как включить ведение журнала Ehcache

В моем проекте Spring + Hibernate я выполнял ведение журнала по SLF4J 1.6.4 с помощью LogBack. Теперь я добавил Ehcache 2.2.0 (через ehcache- spring -annotations-1.1.3). Кажется, что кэширование работает как метод, аннотированный с помощью @Cacheable, который больше не выполняется, хотя возвращает правильный результат. Но мне интересно увидеть журнал, написанный Ehcache. Поскольку Ehcache также использует SLF4J, я предположил, что журнал должен быть записан в мой файл журнала. Но этого не происходит. Logback.xml имеет следующее.

 <root level="info">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="ROLLING"/>
</root>

Добавление следующего также не помогает

 <logger name="net.sf.ehcache"> 
</logger> 

Ehcache.xml

    <cache name="sampleCache1"
       eternal="false"
       overflowToDisk="true"
       timeToIdleSeconds="300"
       timeToLiveSeconds="600"           
       memoryStoreEvictionPolicy="LFU"           
        />

Прошу посоветовать мне решить эту проблему.

Ehcache использует SLF4J 1.6.1, в то время как мой проект использовал SLF4J 1.6.4. Может ли это вызвать какие-либо проблемы?

Спасибо

Ответ 1

EhCache много регистрируется на уровне DEBUG. Прежде всего, этот фрагмент конфигурации отфильтровывает все протоколирующие инструкции ниже INFO:

<root level="info">

Измените его на

<root level="ALL">

Во-вторых

<logger name="net.sf.ehcache">

требуется повышенный уровень ведения журнала

<logger name="net.sf.ehcache" level="ALL"/> 

Затем вы должны увидеть множество сообщений о регистрации из EhCache (и других).

Ответ 2

Я также счел удобным включить ведение журнала DEBUG на org.springframework.cache, потому что я использую функцию кэширования Spring Framework 4.2.1 (@Cacheable и т.д.).

Ответ 3

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

Это означает, что сообщения ALL журнала каждого уровня пройдут (если вы не установите порог для ваших добавлений).

Вместо этого я предлагаю вам установить разумный уровень корневого регистратора, например INFO или WARN, а затем установить уровень журнала отдельных регистраторов, если вам нужна более конкретная информация.

Таким образом, вы не создаете лес ненужной информации.

Я предлагаю что-то вроде ниже:

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
  <param name="Target" value="System.out"/> 
  <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
  </layout>  
</appender> 

<logger name="net.sf.ehcache">
  <level value="DEBUG"/>
</logger>

<root> 
  <priority value ="INFO" /> 
  <appender-ref ref="CONSOLE" /> 
</root>