2012-05-22 8 views
9

In meinem Spring + Hibernate-Projekt habe ich Protokollierung von SLF4J 1.6.4 mit LogBack durchgeführt. Nun habe ich Ehcache 2.2.0 hinzugefügt (über ehcache-spring-annotations-1.1.3). Das Caching scheint als die mit @Cacheable annotierte Methode zu funktionieren, die nicht mehr ausgeführt wird, obwohl das korrekte Ergebnis zurückgegeben wird. Aber ich bin interessiert, das Protokoll des Ehcache zu sehen. Da Ehcache auch SLF4J verwendet, sollte das Protokoll in meine Protokolldatei geschrieben werden. Aber das passiert nicht. Die logback.xml hat folgendes.So aktivieren Sie die Protokollierung von Ehcache

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

Hinzufügen Folgenden auch nicht

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

ehcache.xml

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

Bitte teilen Sie mir nicht helfen, das Problem zu überwinden.

Der Ehcache verwendet SLF4J 1.6.1, während mein Projekt SLF4J 1.6.4 verwendet. Kann es ein Problem verursachen?

Dank

+0

ich gerade herausgefunden, dass ehcache nicht alles log ich erwartet hatte. Also, hast du ehcache gesehen, wenn er Dinge protokolliert, die du erwartest? – codesmith

Antwort

44

ehcache meldet eine Menge auf DEBUG Ebene. Vor allem diese Konfiguration Schnipsel filtert alle Logging-Anweisungen unter INFO:

<root level="info"> 

ändern es zu

<root level="ALL"> 

Zweitens

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

braucht eine erhöhte Protokollierungsstufe

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

Sie sollten dann viele Protokollanweisungen von EhCache (und anderen) sehen.

+0

Danke Tomasz. Ihre Lösungen funktionieren. – Tamim

+3

Sorry, hab nicht genügend Reputation, um abzustimmen :) – Tamim

+0

Kann jemand bitte einen Blick auf die Quest werfen, die ich gepostet habe: http://stackoverflow.com/questions/41734999/spring-framework-application-properties-vs-logback- xml – user18853

5

Ich fand es auch praktisch, DEBUG-Protokollierung auf org.springframework.cache zu aktivieren, da ich die Caching-Funktion von Spring Framework 4.2.1 (@Cacheable usw.) verwenden.

+0

bedeutet das Hinzufügen dieser Zeile zu application.properties: "logging.level.org.springframework.cache: DEBUG" – user18853

+0

Ja, das würde funktionieren, aber es gibt [andere Möglichkeiten, es auch zu erreichen] (https: // docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html). – ben3000

5

Meiner Meinung nach die Einstellung der Root-Logger-Ebene auf ALL ist keine gute Idee.

Dies bedeutet, dass ALL Protokollmeldungen jedes Levels durchkommen (es sei denn, Sie legen einen Schwellenwert für Ihre Appender fest).

Stattdessen empfehle ich, dass Sie eine sinnvolle Root-Logger-Ebene wie INFO oder WARN festlegen, und legen Sie dann die Protokollebene der einzelnen Protokollierer fest, wenn Sie genauere Informationen benötigen.

Auf diese Weise erstellen Sie keine Gesamtstruktur unnötiger Informationen.

Ich schlage vor, so etwas wie die folgende Liste:

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