在Scala中,您可以使用LoggingReceive包装receive函数。您如何从Java API实现相同的目标?
def receive = {
LoggingReceive {
case x ⇒ // do something
}
}
答案 0 :(得分:7)
Scala API具有LoggingReceive
装饰器,因为部分函数文字使得在所有情况下表达要做的事情变得尴尬(比如这个日志记录)。
在Java中,您没有遇到此问题,因为始终会调用onReceive
方法,并且您可以在顶部放置一个日志记录语句,以查看该actor接收的所有消息。作为额外的奖励,您可以决定在哪个级别记录它们; - )
如果你想以配置设置akka.actor.debug.receive
为条件进行日志记录(就像Scala一样),那么你可以说例如
if (getContext().system().settings().AddLoggingReceive())
log.debug("received message of type {}", msg.getClass());