记录Akka中的所有消息,而不修改所有接收方法

时间:2015-01-19 16:48:15

标签: scala logging akka messages

我想将所有收到的消息记录到我的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
  }
}

有没有办法隐式地或通过配置?

1 个答案:

答案 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会记录收到的消息。