首页 文章

如何启用Ehcache的日志记录

提问于
浏览
10

在我的Spring Hibernate项目中,我使用LogBack通过SLF4J 1.6.4进行日志记录 . 现在,我添加了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 . 它会引起任何问题吗?

谢谢

3 回答

  • 5

    EhCache在 DEBUG 级别上记录了很多 . 首先,此配置代码段过滤掉 INFO 下面的所有日志记录语句:

    <root level="info">
    

    将其更改为

    <root level="ALL">
    

    其次

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

    需要提高日志记录级别

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

    然后,您应该看到EhCache(和其他人)的大量日志记录 .

  • 8

    在我看来,将根 Logger 级别设置为 ALL 并不是一个好主意 .

    这意味着每个级别的 ALL 日志消息都将通过(除非您在appender上设置阈值) .

    相反,我建议您设置合理的根 Logger 级别,例如 INFOWARN ,然后在需要更多特定信息时设置各个 Logger 的日志级别 .

    这样您就不会创建不必要信息的森林 .

    我建议如下:

    <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>
    
  • 50

    我还发现在 org.springframework.cache 上启用DEBUG登录非常方便,因为我有_2689532的缓存功能(@Cacheable等) .

相关问题