確實,他們達到了幾乎相同的目的,所以我可以理解你的問題:「爲什麼有兩個選項」?
對於背景下,AsyncAppender一直在Log4j2從一開始,在異步記錄儀是在去年三月(2014)加入。這就是目前的情況。
log4j團隊目前並不認真考慮移除AsyncAppender。有一件事要記住,異步記錄器有一個外部依賴項(LMAX disruptor jar),AsyncAppender只與log4j2-api和log4j2-core jar一起工作。
要回答你的最後一個問題,可以將AsyncAppender與Async Loggers組合起來,但是你不會獲得任何東西。這尚未經過測試。我沒有檢查過,但在將日誌事件從Async Logger線程移交給AsyncAppender線程時,可能會出現位置信息丟失的問題。我不會推薦這樣做。
更新(2014年6月23日):我做了一些測試,並有與AsyncAppender與AsyncLoggers結合的幾個問題。這些在RC2中修復。我仍然不建議這樣做,因爲它只是增加了另一個使用CPU /內存而不貢獻任何內容的中間步驟。
UPDATE(2016年7月20日):另一個區別:由於2.6版本,Log4j的2可以是垃圾自由帶有Async記錄器,但不與AsyncAppender。
在回答在下面的評論你的第二個問題:AsyncAppender有其自己的隊列和線程,其中AsyncLoggers使用LMAX干擾器ringbuffer的隊列,並使用一個執行程序線程。
感謝Remko.i明白,對於異步記錄器你需要干擾jar.AsyncAppender執行asynclogger的append方法分離thread.Is AsyncLogger也執行append方法在分離線程或不同的東西。請澄清 –