2012-05-22 5 views
9

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

<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. Может ли это вызвать какие-либо проблемы?

Благодаря

+0

Я только что узнал, что EHCache не регистрирует все, что я ожидал. Итак, вы посмотрели ehcache, если он действительно регистрирует то, что вы ожидаете? – codesmith

ответ

44

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

<root level="info"> 

Изменить его

<root level="ALL"> 

Во-вторых

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

необходим повышенный уровень протоколирования

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

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

+0

Спасибо Tomasz. Ваши решения работают. – Tamim

+3

Извините, у меня недостаточно репутации, чтобы проголосовать :) – Tamim

+0

Может кто-нибудь, пожалуйста, взгляните на квест, который я разместил: http://stackoverflow.com/questions/41734999/spring-framework-application-properties-vs-logback- xml – user18853

5

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

+0

означает, что это добавление этой строки в application.properties: "logging.level.org.springframework.cache: DEBUG" – user18853

+0

Да, это сработает, но есть [другие способы его достижения] (https: // docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html). – ben3000

5

На мой взгляд, установить уровень корневого регистратора на 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> 

Смежные вопросы