我正在嘗試編寫一個可以追蹤所有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