【问题标题】:How to log the cache value using logger如何使用记录器记录缓存值
【发布时间】:2020-12-06 21:20:51
【问题描述】:

我有一个简单的 Spring Web 应用程序,它连接到 Postgre 数据库。我的问题是我在 dao 中有方法,用 @Cacheable 注释。如果方法进入数据库,或者它的结果是从缓存中加载的,有没有办法记录?例如,我想查看以下日志:

该值是从 db.... 中检索的 该值是从缓存中检索的

【问题讨论】:

  • 检查这是否回答了您的问题 - stackoverflow.com/questions/37281139/… ?
  • 你真正想要的是metrics; Spring Boot 已经与 Micrometer 集成,后者支持缓存抽象。
  • 这听起来有点奇怪,但如果你想这样做,那么有办法做到这一点。您可以通过覆盖弹簧的默认行为来做到这一点。 Spring 在内部使用Simple Cache Resolver 来拦截请求并检查缓存中是否存在该键的数据。您可以从 SimpleCacheResolver 覆盖它,如果它返回数据,则记录您想要的语句。

标签: java maven logging caching spring-cache


【解决方案1】:

您可以为CacheAspectSupport 启用trace 日志。不过,这可能会给您提供太多信息。

如果缓存命中,你会得到

key '" + key + "' 在缓存中找到的缓存条目" + cache.getName() + "'"

还有一个缓存未命中

“在缓存中没有 key '” + key + “' 的缓存条目” + context.getCacheNames()

没有配置缓存的挂钩点,以便在发生这些事情时调用您。您可能想查看您的缓存库,看看它们是否提供了一些挂钩点。

【讨论】:

    猜你喜欢
    • 2016-12-10
    • 1970-01-01
    • 2016-09-20
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多