2012-05-22 15 views
9

Nel mio progetto Spring + Hibernate, stavo facendo il logging da SLF4J 1.6.4 con LogBack. Ora, ho aggiunto Ehcache 2.2.0 (tramite ehcache-spring-annotations-1.1.3). Il caching sembra funzionare come il metodo, annotato con @Cacheable, non viene più eseguito, sebbene restituisca il risultato corretto. Ma sono interessato a vedere il log scritto da Ehcache. Siccome Ehcache usa anche SLF4J, suppongo, il log dovrebbe essere scritto nel mio file di registro. Ma questo non sta succedendo. Logback.xml ha il seguente.Come abilitare la registrazione di Ehcache

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

Aggiunta di seguito, inoltre, non aiuta

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

Ehcache.xml

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

Si prega di avvisare me per superare il problema.

Ehcache utilizza SLF4J 1.6.1, mentre il mio progetto utilizza SLF4J 1.6.4. Può causare qualche problema?

Grazie

+0

ho appena scoperto che EHCache non registra tutto quello che mi aspettavo. Quindi, hai guardato ehcache se registra effettivamente le cose che ti aspetti? – codesmith

risposta

44

EHCache registra un sacco sulla DEBUG livello. Innanzitutto, questo frammento configurazione filtra tutte le indicazioni di registrazione sotto INFO:

<root level="info"> 

Change a

<root level="ALL"> 

secondo

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

richiede un maggiore livello di registrazione

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

Dovresti quindi vedere molte dichiarazioni di registrazione da EhCache (e altre).

+0

Grazie Tomasz. Le tue soluzioni funzionano. – Tamim

+3

Scusa non ho abbastanza reputazione per votare :) – Tamim

+0

Qualcuno può dare un'occhiata alla missione che ho postato: http://stackoverflow.com/questions/41734999/spring-framework-application-properties-vs-logback- xml – user18853

5

Ho anche trovato utile abilitare il login DEBUG su org.springframework.cache perché sto utilizzando la funzione di caching di Spring Framework 4.2.1 (@Cacheable ecc.).

+0

significa aggiungere questa riga a application.properties: "logging.level.org.springframework.cache: DEBUG" – user18853

+0

Sì, funzionerebbe, ma ci sono [altri modi per farlo] (https: // docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html). – ben3000

5

A mio parere l'impostazione del livello di root logger su ALL non è una buona idea.

Ciò significa che i messaggi di registro di ogni livello saranno passati (a meno che non si imposti una soglia per gli appendici).

Invece, suggerisco di impostare un livello di logger root ragionevole, come INFO o WARN, e quindi impostare il livello di registro dei singoli logger se si richiedono informazioni più specifiche.

In questo modo non si crea una foresta di informazioni inutili.

suggerisco qualcosa di simile al seguito:

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

Problemi correlati