命中@Cacheable时进行弹簧缓存日志记录

2022-09-01 04:49:57

目前,我正在使用Spring Cache和/注释。@Cacheable@CacheEvict

我想得到某种控制台日志语句,如"INFO: i got those values from the cache, NOT from the host. awesome"

有没有一种干净而简单的方法来做到这一点?顺便说一句,我们显然正在使用,如果这有任何意义的话。slf4j


答案 1

Spring本身在级别记录器下的一些缓存抽象行为。因此,如果将记录器下的日志追加到适当的追加器,您将获得有关控制台的一些有用信息。如果您使用的是 Logback,则可以在以下位置使用:org.springframework.cachetraceorg.springframework.cachelogback.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,排序:空]”的缓存条目


答案 2

对于Spring Boot 2,您可以在应用程序中添加属性:

logging.level.org.springframework.cache=TRACE

推荐