Hello

"Inspired" by the 
presentation http://www.slideshare.net/EvanChan2/akka-inproductionpnw-scala2013 
I wanted to introduce stackable traits pattern to my Akka application. For 
now I wanted to add logging of messages using LoggingReceive and basic 
tracing with akka-tracing.

Following the presentation I created:

trait ActorStack extends Actor {
  def wrappedReceive: Receive

  def receive: Receive = {
    case x => if (wrappedReceive.isDefinedAt(x)) wrappedReceive(x) else 
unhandled(x)
  }
}

and two traits:

trait LoggingReceiveActor extends ActorStack {
  override def receive: Receive = LoggingReceive {
    case x => {
      println("+++" + x) // added for debugging 
      super.receive(x)
    }
  }
}

trait StackableActorTracing extends ActorStack with ActorTracing {
  var currentMessage: Traced[Any] = Traced("tracing turned off")

  override def receive: Receive = {
    case msg @ Traced(inner) => {
      trace.sample(msg, this.getClass.getSimpleName)
      currentMessage = msg
      super.receive(inner)
    }

    case msg => {
      currentMessage = Traced("tracing turned off")
      super.receive(msg)
    }
  }

  def msg = {
    currentMessage
  }
}

also I created one utility trait that gathers those two traits:

trait BaseActor extends ActorStack with ActorLogging
  with LoggingReceiveActor with StackableActorTracing

Now when I take my example actor:

class RotationService(rotationRepository: ActorRef) extends BaseActor with 
DefaultAskTimeout {
  implicit val dispatcher = context.dispatcher

  def wrappedReceive: Receive = {
    case createCommand @ CreateRotation() => {
        ...
    }

When I execute unit test that sends *CreateRotation *message to 
*RotationService 
*actor I am getting:

Testing started at 3:41 PM ...
Connected to the target VM, address: '127.0.0.1:51978', transport: 'socket'
15:41:36.520 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-2]
 
INFO  akka.event.slf4j.Slf4jLogger - Slf4jLogger started
15:41:36.565 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-2]
 
DEBUG akka.event.EventStream - logger log1-Slf4jLogger started
15:41:36.584 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-2]
 
DEBUG akka.event.EventStream - Default Loggers started
15:41:36.586 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-2]
 
DEBUG a.a.LocalActorRefProvider$SystemGuardian - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/system/deadLetterListener#-162762200]
15:41:36.588 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-2]
 
DEBUG akka.event.DeadLetterListener - started 
(akka.event.DeadLetterListener@2025eae4)
15:41:36.627 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-5]
 
INFO  kamon.statsd.StatsDExtension - Starting the Kamon(StatsD) extension
15:41:36.652 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-5]
 
DEBUG a.a.LocalActorRefProvider$Guardian - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/user/statsd-metrics-sender#-609019730]
15:41:36.688 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-4]
 
DEBUG a.a.LocalActorRefProvider$SystemGuardian - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/system/IO-UDP-FF#221802495]
15:41:36.707 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-3]
 
DEBUG kamon.statsd.StatsDMetricsSender - started 
(kamon.statsd.StatsDMetricsSender@1f06d526)
15:41:36.747 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-4]
 
DEBUG a.a.LocalActorRefProvider$Guardian - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/user/kamon-metrics-subscriptions#-992962374]
15:41:36.770 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-4]
 
DEBUG kamon.metrics.Subscriptions - started 
(kamon.metrics.Subscriptions@6680693)
15:41:36.778 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-4]
 
DEBUG akka.routing.RouterPoolActor - started 
(akka.routing.RouterPoolActor@66ee2542)
15:41:36.779 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-4]
 
DEBUG akka.routing.RouterPoolActor - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/system/IO-UDP-FF/selectors/$a#-483988336]
15:41:36.787 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-3]
 
DEBUG akka.io.UdpManager - started (akka.io.UdpManager@4fb22e7b)
15:41:36.792 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-3]
 
DEBUG akka.io.UdpManager - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/system/IO-UDP-FF/selectors#1030403184]
15:41:36.931 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-3]
 
DEBUG akka.testkit.TestActor - started (akka.testkit.TestActor@15e46de6)
15:41:36.934 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-5]
 
DEBUG a.a.LocalActorRefProvider$SystemGuardian - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/system/testActor1#-958709488]
15:41:36.955 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-5]
 
DEBUG a.a.LocalActorRefProvider$Guardian - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/user/$a#756409676]
15:41:36.960 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-5]
 
DEBUG akka.io.SelectionHandler - started (akka.io.SelectionHandler@dc33904)
15:41:36.964 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-5]
 
DEBUG akka.io.SelectionHandler - now watched by 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/system/IO-UDP-FF/selectors#1030403184]
15:41:36.971 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-5]
 
DEBUG a.a.LocalActorRefProvider$Guardian - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/user/$b#-689772232]
15:41:36.999 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-6]
 
DEBUG akka.io.SelectionHandler - now supervising 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/system/IO-UDP-FF/selectors/$a/0#437926056]
15:41:37.012 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-3]
 
DEBUG commands.domain.RotationRepository - started 
(commands.domain.RotationRepository@58053ef7)
15:41:37.015 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-3]
 
DEBUG commands.application.RotationService - started 
(commands.application.RotationService@4068f746)
15:41:37.038 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-6]
 
DEBUG akka.io.UdpSender - started (akka.io.UdpSender@69161204)
15:41:37.040 
[TestActorSystem-9dc08bc090f2416bbf369947fd64908b-akka.actor.default-dispatcher-6]
 
DEBUG akka.io.UdpSender - now watched by 
Actor[akka://TestActorSystem-9dc08bc090f2416bbf369947fd64908b/system/IO-UDP-FF/selectors/$a#-483988336]
*+++CreateRotation()*

In the last line in logs it can be seen that the body of receive defined in 
*LoggingReceiveActor 
*is properly executed, but there is no message in logs *received handled 
message CreateRotation().*

But when I change my definition of BaseActor to:

trait BaseActor extends ActorStack with ActorLogging
  with StackableActorTracing with LoggingReceiveActor

So I swapped *StackableActorTracing *with *LoggingReceiveActor *and now I 
am getting in my logs:

Testing started at 3:46 PM ...
Connected to the target VM, address: '127.0.0.1:49575', transport: 'socket'
15:46:14.086 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-4]
 
INFO  akka.event.slf4j.Slf4jLogger - Slf4jLogger started
15:46:14.130 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-4]
 
DEBUG akka.event.EventStream - logger log1-Slf4jLogger started
15:46:14.150 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-4]
 
DEBUG akka.event.EventStream - Default Loggers started
15:46:14.151 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-4]
 
DEBUG a.a.LocalActorRefProvider$SystemGuardian - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/system/deadLetterListener#1184326713]
15:46:14.153 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-4]
 
DEBUG akka.event.DeadLetterListener - started 
(akka.event.DeadLetterListener@7347bcf4)
15:46:14.163 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-4]
 
INFO  kamon.statsd.StatsDExtension - Starting the Kamon(StatsD) extension
15:46:14.184 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-4]
 
DEBUG a.a.LocalActorRefProvider$Guardian - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/user/statsd-metrics-sender#1184566021]
15:46:14.225 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-4]
 
DEBUG a.a.LocalActorRefProvider$SystemGuardian - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/system/IO-UDP-FF#-1386767628]
15:46:14.244 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-3]
 
DEBUG kamon.statsd.StatsDMetricsSender - started 
(kamon.statsd.StatsDMetricsSender@11e5adb2)
15:46:14.276 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-3]
 
DEBUG a.a.LocalActorRefProvider$Guardian - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/user/kamon-metrics-subscriptions#-600730271]
15:46:14.290 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG kamon.metrics.Subscriptions - started 
(kamon.metrics.Subscriptions@4a32ee13)
15:46:14.381 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-5]
 
DEBUG akka.io.UdpManager - started (akka.io.UdpManager@32f514f3)
15:46:14.382 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-5]
 
DEBUG akka.io.UdpManager - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/system/IO-UDP-FF/selectors#-1172677154]
15:46:14.389 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-5]
 
DEBUG akka.routing.RouterPoolActor - started 
(akka.routing.RouterPoolActor@3747681)
15:46:14.391 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-5]
 
DEBUG akka.routing.RouterPoolActor - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/system/IO-UDP-FF/selectors/$a#887910570]
15:46:14.423 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-2]
 
DEBUG akka.testkit.TestActor - started (akka.testkit.TestActor@138a6240)
15:46:14.428 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG a.a.LocalActorRefProvider$SystemGuardian - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/system/testActor1#-34049509]
15:46:14.452 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG akka.io.SelectionHandler - started (akka.io.SelectionHandler@1af2688a)
15:46:14.455 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG akka.io.SelectionHandler - now watched by 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/system/IO-UDP-FF/selectors#-1172677154]
15:46:14.461 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-3]
 
DEBUG a.a.LocalActorRefProvider$Guardian - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/user/$a#1251946934]
15:46:14.472 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-5]
 
DEBUG a.a.LocalActorRefProvider$Guardian - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/user/$b#193466603]
15:46:14.478 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-5]
 
DEBUG akka.io.SelectionHandler - now supervising 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/system/IO-UDP-FF/selectors/$a/0#657471358]
15:46:14.529 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG commands.domain.RotationRepository - started 
(commands.domain.RotationRepository@57afefb7)
15:46:14.532 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG commands.application.RotationService - started 
(commands.application.RotationService@44af61a4)
15:46:14.534 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG akka.io.UdpSender - started (akka.io.UdpSender@101cd25f)
15:46:14.535 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG akka.io.UdpSender - now watched by 
Actor[akka://TestActorSystem-5c322748c8fd4465b79823a366dabea4/system/IO-UDP-FF/selectors/$a#887910570]
15:46:14.536 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG commands.application.RotationService - received handled message 
CreateRotation()
+++CreateRotation()

So now I am getting two log messages about incoming message - one from 
LoggingReceive: *15:46:14.536 
[TestActorSystem-5c322748c8fd4465b79823a366dabea4-akka.actor.default-dispatcher-6]
 
DEBUG commands.application.RotationService - received handled message 
CreateRotation()* and one from my *println.*


I am wondering then what is the cause of this - why the *LoggingReceive *does 
not want to work properly in the first case?

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to