我想将所有收到的消息记录到我的Akka应用中的所有演员。
如果actor接收方法是akka.actor.debug.receive
,则会有一个config LoggingReceive
来记录发送给actor的所有消息。
根据http://doc.akka.io/docs/akka/current/additional/faq.html,这意味着将所有接收方法与How to log all incoming messages from Akka (Java)
中的LoggingReceive
一起包装
def receive = {
LoggingReceive {
case x ⇒ // do something
}
}
有没有办法隐式地或通过配置?
答案 0 :(得分:5)
我不知道,但你应该很容易做到这样的事情:
trait LoggingReceiveActor extends Actor{
def receive = LoggingReceive(loggedReceive)
def loggedReceive:Receive
}
class MyActor extends LoggingReceiveActor{
def loggedReceive = {
case _ =>
}
}
任何继承自LoggingReceiveActor
的actor现在必须为loggingReceive
提供impl,如果你这样做,那么当启用调试日志时,这种actor会记录收到的消息。