如果为@Cacheable调用缓存,则为Spring日志

时间:2015-07-15 10:44:47

标签: java spring caching logging

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

Object with id 'x' was retrieved from database at 23:44:30 / 2015....
Object with id 'x' was retrived from cache at...

谢谢

3 个答案:

答案 0 :(得分:3)

Spring会在TRACE级别的ping类别下注销缓存匹配和未命中。

答案 1 :(得分:0)

如果您要调用持久层,则可以在服务层中显示日志消息。这是我从事某些代码的方法,我正在这样做。当缓存未被命中时,我只获得一个日志条目。

@Cacheable(value = CACHE_PICO)
@Transactional(readOnly = true)
@PostAuthorize(PICO_READ + OR + ALLOWED_FOR_ADMIN)
public Pico get(long id) {
    log.info("cached missed for pico {}", id);
    return _picoRepository.findOne(id);
}

答案 2 :(得分:-1)

您可以使用log4jdbcdocu) - 它是您正常的jdbc连接的包装,它记录每个执行的语句。