java - @Cacheable 命中的 Spring 缓存日志记录

标签 java spring slf4j spring-cache

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

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

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

最佳答案

Spring 本身在 trace 级别的 org.springframework.cache 记录器下记录了它的一些缓存抽象行为。因此,如果您将 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>

使用此配置,您应该会在控制台上看到类似以下内容:

Cache entry for key 'Page request [number: 0, size 20, sort: null]' found in cache 'persons'

关于java - @Cacheable 命中的 Spring 缓存日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37281139/

相关文章:

java - 在 Spring 中使用 MultiPartFile 数据类型在 webapp 上上传时重命名文件

slf4j - 如何使用 slf4j 框架屏蔽敏感数据?

java - 在非Maven Java项目中实现slf4j和logback

java - 为什么 Apache Kafka 消费者不使用 Log4j2 根记录器?

java - Hbase 扫描与 Mapreduce 的动态计算

java - 如何在我的 Eclipse 插件中监听用户退出?

java - 如何使用 HQL(Hibernate 查询语言)获取列的最后一个值

java - 静态方法是 DI 反模式吗?

java - Java 和 Android 的代码解释器和运行器

java - 无法提取响应 : no suitable HttpMessageConverter found