web-dev-qa-db-fra.com

Journalisation du cache Spring sur un hit @Cacheable

Actuellement, je travaille avec un cache Spring et les annotations @Cacheable/@CacheEvict.

J'aimerais obtenir une sorte d'instruction du journal de la console telle que "INFO: i got those values from the cache, NOT from the Host. awesome"

Y a-t-il un moyen propre et facile de faire cela? Nous utilisons slf4j apparemment btw, si cela présente un intérêt quelconque.

11
BassSultan

Spring lui-même consigne certains de ses comportements de mise en cache d'abstractions sous l'enregistreur org.springframework.cache au niveau trace. Ainsi, si vous ajoutez des journaux sous le journal org.springframework.cache à un appender approprié, vous obtiendrez des informations utiles sur, par exemple, la console. Si vous utilisez Logback, vous pouvez utiliser quelque chose comme ceci dans votre logback.xml:

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

Avec cette configuration, vous devriez voir quelque chose comme suivre sur votre console:

Entrée de cache pour la clé 'Page request [numéro: 0, taille 20, sort: null]' trouvé dans la cache 'personnes'

24
Ali Dehghani

Vous pouvez activer la journalisation au niveau de la trace.

Par exemple, dans application.properties, mettez 'trace = true'.

Documentation de journalisation printanière

1
Mate Šimović

Et pour Spring Boot 2, vous pouvez ajouter dans votre application.properties:

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