How to enable logging of Ehcache
In my Spring + Hibernate project, I was doing logging by SLF4J 1.6.4 with LogBack. Now, I've added Ehcache 2.2.0 (through ehcache-spring-annotations-1.1.3). The caching seems to be working as the method, annotated with @Cacheable, no longer being executed, though returning the correct result. But, I'm interested to see the log written by the Ehcache. As Ehcache also uses SLF4J, I supposed, the log should be written into my log file. But, this is not happening. The logback.xml has the following.
<root level="info"> <appender-ref ref="STDOUT"/> <appender-ref ref="ROLLING"/> </root>
Adding following also doesn't help
<logger name="net.sf.ehcache"> </logger>
<cache name="sampleCache1" eternal="false" overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LFU" />
Please advise me to overcome the problem.
The Ehcache is using SLF4J 1.6.1, while my project was using SLF4J 1.6.4. Can it cause any problem?
EhCache logs a lot on DEBUG level. First of all, this configuration snippet filters out all logging statements below INFO:
Change it to
needs an increased logging level
<logger name="net.sf.ehcache" level="ALL"/>
You should then see plenty of logging statements from EhCache (and others).
In my opinion setting the root logger level to ALL is not a good idea.
This means that ALL log messages of every level will get through (unless you set a threshold on your appenders).
Instead, I suggest you set a sensible root logger level, such as INFO or WARN, and then set the log level of individual loggers if you require more specific information.
This way you are not creating a forest of unnecessary information.
I suggest something like the below:
<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>
I also found it handy to enable DEBUG logging on org.springframework.cache because I'm using Spring Framework 4.2.1's caching feature (@Cacheable etc.).