Spring регистрация кэша в @Cacheable hit

В настоящее время я работаю с Spring Cache и аннотациями @Cacheable/@CacheEvict.

Я хотел бы получить какой-то оператор консоли, например "INFO: i got those values from the cache, NOT from the host. awesome"

Есть ли простой и простой способ сделать это? Мы используем slf4j, очевидно, btw, если это представляет интерес.

Ответ 1

Spring сам записывает некоторые из своих действий кэширования абстракций под org.springframework.cache logger в trace. Итак, если вы добавляете журналы под регистратором org.springframework.cache к соответствующему приложению, у вас будет полезная информация, например, на консоли. Если вы используете Logback, вы можете использовать что-то вроде следующего в 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>

В этой конфигурации на консоли вы увидите что-то вроде следующего:

Кэш-запись для ключа 'Запрос страницы [число: 0, размер 20, sort: null]' найденный в кеше "люди"

Ответ 3

А для Spring Boot 2 вы можете добавить в свои application.properties:

logging.level.org.springframework.cache=TRACE

Ответ 4

Что делать, если мне нужно выполнить какое-либо действие в отношении попадания/отсутствия попадания в кэш? как это реализовать?