wake-up-neo.com

Spring-Cache-Protokollierung bei @Cacheable Hit

Zur Zeit arbeite ich mit einem Spring Cache und den @Cacheable/@CacheEvict-Anmerkungen.

Ich möchte eine Art Konsolenprotokollanweisung wie "INFO: i got those values from the cache, NOT from the Host. awesome".

Gibt es eine saubere und einfache Möglichkeit, dies zu tun? Wir verwenden slf4j offenbar übrigens, wenn dies von Interesse ist.

11
BassSultan

Spring selbst protokolliert einige seiner Caching Abstractions-Verhalten unter dem org.springframework.cache-Logger in der trace-Ebene. Wenn Sie also Protokolle unter dem org.springframework.cache-Logger an einen entsprechenden Appender anhängen, haben Sie einige nützliche Informationen, beispielsweise über die Konsole. Wenn Sie Logback verwenden, könnten Sie Folgendes in Ihrem logback.xml verwenden:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%msg%n</pattern>
        </encoder>
    </appender>

    <logger name="org.springframework.cache" level="trace">
        <appender-ref ref="STDOUT" />
    </logger>
</configuration>

Bei dieser Konfiguration sollten Sie etwa Folgendes auf Ihrer Konsole sehen:

Cache-Eintrag für Schlüssel 'Seitenanforderung [Nummer: 0, Größe 20, Sortierung: Null]' ' gefunden in Cache 'Personen'

24
Ali Dehghani

Sie können die Trace-Level-Protokollierung aktivieren.

B. in application.properties 'trace = true'.

Federprotokolldokumentation

1
Mate Šimović

Und für Spring Boot 2 können Sie Ihre application.properties hinzufügen:

logging.level.org.springframework.cache=TRACE
0
Rafael