Hi, fellow hAkkers!
I'm quite a newcomer to the whole Akka (as well as Scala) scene so I'm not completely familiarized with some techniques. I have built a very, very simple Logging trait using SLF4J and Logback. By now I'm able to save logs on MongoDB, using ReactiveMongo driver (which is built on Akka, curiously). It works quite well with non-actor entities. However, with actors, it semi-works... basically, if I have, say, a Consumer and a Producer, I can't get a logger working for Consumer but it works for Producer... =/ SLF4J just throws me this exception in the face : [ERROR] [06/04/2014 09:51:52.860] [kafka-workers-akka.actor.default-dispatcher-2] [akka://kafka-workers/user/consumer] org.slf4j.helpers.SubstituteLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext akka.actor.ActorInitializationException: exception during creation at akka.actor.ActorInitializationException$.apply(Actor.scala:164) at akka.actor.ActorCell.create(ActorCell.scala:596) at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456) at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478) at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:263) at akka.dispatch.Mailbox.run(Mailbox.scala:219) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) Caused by: java.lang.ClassCastException: org.slf4j.helpers.SubstituteLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext at com.ignidata.core.logging.LogFactory$.createLoggerContext(LoggerFactory.scala:68) at com.ignidata.core.logging.LogFactory$.createLogger(LoggerFactory.scala:40) at com.ignidata.core.logging.persistence.Logging$class.$init$(Logging.scala:22) at com.ignidata.core.integration.KafkaAkkaConsumer.<init>(KafkaAkkaConsumer.scala:20) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:374) at akka.util.Reflect$.instantiate(Reflect.scala:45) at akka.actor.NoArgsReflectConstructor.produce(Props.scala:358) at akka.actor.Props.newActor(Props.scala:249) at akka.actor.ActorCell.newActor(ActorCell.scala:552) at akka.actor.ActorCell.create(ActorCell.scala:578) ... 9 more [INFO] [06/04/2014 09:51:52.905] [kafka-workers-akka.actor.default-dispatcher-4] [akka://kafka-workers/user/consumer] Message [scala.Tuple4] from Actor[akka://kafka-workers/deadLetters] to Actor[akka://kafka-workers/user/consumer#-91164000] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. [INFO] [06/04/2014 09:51:52.915] [kafka-workers-akka.actor.default-dispatcher-5] [akka://kafka-workers/user/consumer] Message [java.lang.String] from Actor[akka://kafka-workers/deadLetters] to Actor[akka://kafka-workers/user/consumer#-91164000] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'. 09:51:53,376 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 09:51:53,388 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 09:51:53,444 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 09:51:53,555 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG 09:51:53,555 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 09:51:53,557 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 09:51:53,559 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@13836c80 - Registering current configuration as safe fallback point 09:51:53,619 |-INFO in ch.qos.logback.classic.net.SyslogAppender[null] - Defaulting maxMessageSize to [65000] 09:51:53.660 [kafka-workers-akka.actor.test-dispatcher-7] INFO c.i.c.integration.KafkaAkkaProducer - Creating producer with config: (page-visits,localhost:9092,true,false,200,3) log4j:WARN No appenders could be found for logger (kafka.utils.VerifiableProperties). log4j:WARN Please initialize the log4j system properly. 09:51:54.984 [kafka-workers-akka.actor.test-dispatcher-7] INFO c.i.c.integration.KafkaAkkaProducer - Created producer with config: (page-visits,localhost:9092,true,false,200,3) 09:51:55.039 [kafka-workers-akka.actor.test-dispatcher-7] INFO c.i.c.integration.KafkaAkkaProducer - Message about to be sent: test 1 09:51:56.928 [kafka-workers-akka.actor.test-dispatcher-7] INFO c.i.c.integration.KafkaAkkaProducer - Message sent: test 1 09:51:56.966 [kafka-workers-akka.actor.test-dispatcher-7] INFO c.i.c.integration.KafkaAkkaProducer - Message about to be sent: test 2 09:51:57.142 [kafka-workers-akka.actor.test-dispatcher-7] INFO c.i.c.integration.KafkaAkkaProducer - Message sent: test 2 So you see, both Consumer and Producer mix the same trait, but only the last one manages to get a logger instance. Something anyone has seen at some point? How have you manage to work around it? Thanks for your help! Pedro -- >>>>>>>>>> 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.
