2014-01-08 69 views
4

在Scala中,您可以使用LoggingReceive包裝接收函數。你如何從Java API獲得同樣的結果?如何記錄來自Akka(Java)的所有傳入消息

def receive = { 
    LoggingReceive { 
    case x ⇒ // do something 
    } 
} 
+0

http://doc.akka.io/docs/akka/2.3-M2/java/logging.html? – ClojureMostly

+1

我閱讀文檔頁面,但我認爲它只包括手動記錄。從http://akka.io/faq/「akka.actor.debug.receive將記錄發送給演員的所有消息,如果演員接收方法是LoggingReceive」。但我無法弄清楚如何在Java中應用LoggingReceive。 – Chris

回答

7

斯卡拉API具有LoggingReceive裝飾,因爲部分功能字面使得很難表達的東西在所有情況下做(這樣的記錄)。

在Java中,您不存在此問題,因爲始終調用您的onReceive方法,並且您可以在頂部放置一條日誌語句以查看演員接收到的所有消息。作爲額外的獎勵,你能決定在哪個級別登錄他們;-)

如果你想在配置設置akka.actor.debug.receive(正如斯卡拉)日誌記錄有條件的話,你可以說,例如

if (getContext().system().settings().AddLoggingReceive()) 
    log.debug("received message of type {}", msg.getClass()); 
相關問題