Java Spring缓存登录到@Cacheable hit

Java Spring缓存登录到@Cacheable hit,java,spring,slf4j,spring-cache,Java,Spring,Slf4j,Spring Cache,目前,我正在使用Spring缓存和@Cacheable/@cacheexecute注释 我想得到一些控制台日志语句,比如“INFO:我从缓存中获得了这些值,而不是从主机中获得的。太棒了” 有没有一个干净简单的方法来做到这一点?我们正在使用slf4j显然是顺便说一句,如果这有什么意义的话。Spring本身将其一些缓存抽象行为记录在org.springframework.cache记录器的跟踪级别。因此,如果您将org.springframework.cachelogger下的日志追加到适当的追加器

目前,我正在使用Spring缓存和
@Cacheable
/
@cacheexecute
注释

我想得到一些控制台日志语句,比如
“INFO:我从缓存中获得了这些值,而不是从主机中获得的。太棒了”


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

Spring本身将其一些缓存抽象行为记录在
org.springframework.cache
记录器的
跟踪
级别。因此,如果您将
org.springframework.cache
logger下的日志追加到适当的追加器中,您将获得一些关于控制台的有用信息。如果您使用的是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>

%消息%n
使用此配置,您应该在控制台上看到如下内容:

键“页面请求[编号:0,大小20,排序:null]的缓存项” 在缓存“persons”中找到


您可以启用跟踪级别日志记录

例如,在application.properties中输入“trace=true”


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

logging.level.org.springframework.cache=TRACE

我不认为一直打开跟踪日志是个好主意,即使它只用于缓存日志。
更好的方法是,EHcache已经有了这个命中/未命中指标,您可以通过
JMX
spring-boot-exactor
获得它

要供JMX使用,您可以参考


要使用
弹簧启动执行器
,您可以参考帮助我在项目设置中找到类似配置的。

。谢谢:)当然同意,除非是在本地开发人员的机器上完成。然而,这是一个非常好和有价值的提示,告诉我们如何记录和监视缓存行为。