我正在尝试编写一个可以追踪所有Ehcache GET请求的类。对于痴迷的性能 - 这只会出于调试目的而打开。记录Ehcache获取请求
我可以看到以下三个选项可供选择:
1)写的net.sf.ehcache.event.CacheEventListener
的实现。这将是我的首选方式,但它只有PUT/REMOVE /等。挂钩。没有GET。卫生署!
2)写的net.sf.ehcache.statistics.CacheUsageListener
的实现。这种方法的问题在于,这个接口更多的是为统计而设计,甚至不提供对当前缓存键/元素等东西的访问,所以我将不得不通过ThreadLocal
做出糟糕的黑客行为来实现我想要的。呸!
3)写的Ehcache包装,并通过它信道的所有请求。非常痛苦,因为我们以不同的方式使用Ehcache(使用Hibernate和不使用Ehcache),这意味着我必须为所有这些不同的情况编写不同的包装。增加维护的难度,并不是很精确,因为不可能知道,例如,GET操作是否已经命中了一个陈旧的条目。
我错过了其他选择吗?
有趣的建议,但不幸的是还不够好。这种方法的问题是,它有时会很难(如果不是不可能的)两个日志线相互连接,尤其是如果有很多其他的高速缓存活动正在进行 – mindas
不知道你的意思是把两条线连在一起,什么样的日志线?有线程ID在那里?还是其他的东西? –
如果我按照你的意见,我会得到两个日志行 - 一个来自网络。 sf.ehcache.Cache,另一个来自缓存统计类,如果有很多其他的缓存活动,匹配这两个日志行可能会很困难,如果我得到了你的建议,请纠正我错了。 – mindas