在下面的文件,事件處理程序被描述爲以日誌的地方 http://akka.io/docs/akka/1.2/general/event-handler.html爲什麼要用阿卡事件處理程序的記錄
有一個事件處理程序,這需要記錄系統的地方在阿卡:
akka.event.EventHandler
具體地,該鏈接提供瞭如何同時使用SLF4J做到這一點的一個示例: http://akka.io/docs/akka/1.2/general/slf4j.html
我的問題是'這有什麼好處? 「爲什麼我會這樣做,而不是僅僅使用標準模式的記錄器?」
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
private static Logger log = LoggerFactory.getLogger(MyActor.class);
...
log.info("doing something");
是否有某種底層的好處我會得到,基於線程或調度程序的內部結構,通過使用一個事件處理程序在那個我沒有看到上面的記錄模式?如果沒有,使用事件處理程序進行日誌記錄感覺就像沒有明確的理由偏離熟悉的模式。
感謝您的任何意見!
感謝托馬斯,那個牌子好感。我繼續前進,並更改了我的演員的日誌記錄,以使用EventHandler.info()等方法。它似乎沒有考慮我的log4j.xml文件中指定的模式佈局,但我至少看到了我的INFO級別消息。 –
異步日誌記錄聽起來有點危險。我有什麼保證:a)日誌語句以正確的順序出現,以及b)EventHandler能夠跟上系統的其他部分(如果日誌記錄是系統最慢的部分,日誌隊列只會增長並增長,直到OutOfMemory發生)。同步記錄錯誤有意義嗎? –
如果您依賴特定的排序順序或保證排序,可能基於演員的方法並不適合您。也就是說,由於日誌本身是由一名演員處理的,而演員們將按照他們收到的順序給出他們的消息,所以這應該不成問題。此外,Akka有一個非常穩定的消息隊列實現,它也可以根據您的需要進行調整/調整。如果你擔心溢出緩衝區(我不確定默認情況下Akka有什麼限制),你可以使用一個有界的消息隊列並創建你自己的使用它的日誌處理程序。 –