2013-05-29 2 views
0

J'utilise Play 2.1.1 avec Akka 2.1.4 et Logback cuit dans. Event-handler est défini sur SLF4jLoggerEventHandler. Je voudrais ma demande-Logger.xml pour ressembler à ceci:Déterminez le journal basé sur le chemin d'Akka Actor * NOT * la classe de l'acteur (Logback, Akka 2.1.4)

<logger name="actors.user.someActorParent" .. />

Si ce serait une définition pour someActorParent et tous ses acteurs descendants.

Cependant, peu importe ce que je fais, l'enregistreur semble être déterminé par la classe de l'acteur, pas par le chemin de l'acteur.

Après http://doc.akka.io/docs/akka/2.1.4/scala/logging.html I mis en œuvre LogSource de telle sorte que, étant donné un objet Acteur, il retourne le chemin que « grandparent.parent.me » au lieu de « Akka: // bla/bla. » Tout cela semble vraiment affecter la variable akkaSource MDC. L'enregistreur est toujours déterminé par le paquet de la classe de l'acteur.

Ceci est cohérent avec ce que je vois dans akka.event.Logging.scala et Slf4jEventHandler.scala. Comment est-ce que je peux configurer le logback avec Akka 2.1.4 pour que je puisse définir des loggers basés sur le chemin d'acteur, pas le paquet auquel la classe d'acteur appartient?

Répondre

1

L'enregistreur sera choisi en fonction de la chaîne logSource uniquement si la méthode LogSource.getClazz renvoie la classe akka.event.DummyClassForStringSources. Puisque vous avez déjà écrit votre LogSource, remplacez-le simplement comme le montre here.

Le code qui le détermine peut être trouvé here.

+0

Parfait ... Je ne sais pas comment j'ai raté ça. La réponse me regardait en face tout le temps. Re-implémenté LogSource :: getClazz et tout fonctionne très bien. – FullTimeCoderPartTimeSysAdmin

Questions connexes