2014-01-08 27 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()); 
相关问题