【问题标题】:Determine logger based on Akka Actor's path *NOT* the Actor's class (Logback, Akka 2.1.4)根据 Akka Actor 的路径确定记录器 *NOT* Actor 的类(Logback,Akka 2.1.4)
【发布时间】:2013-05-29 01:51:40
【问题描述】:

我正在使用带有 Akka 2.1.4 和 Logback 的 Play 2.1.1。事件处理程序设置为 SLF4jLoggerEventHandler。我希望我的 application-logger.xml 看起来像这样:

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

这将是 someActorParent 及其所有后代演员的定义。

但是,无论我做什么,记录器似乎都是由 Actor 的类决定的,而不是 Actor 路径。

http://doc.akka.io/docs/akka/2.1.4/scala/logging.html 之后,我以这样一种方式实现了 LogSource,即,给定一个 Actor 对象,它会将路径返回为“grandparent.parent.me”而不是“akka://blah/blah”。所有这一切似乎真正起作用的是 akkaSource MDC 变量。记录器仍然由 Actor 的类的包决定。

这与我在 akka.event.Logging.scala 和 Slf4jEventHandler.scala 中看到的一致。

如何使用 Akka 2.1.4 配置 logback,以便我可以根据 Actor 路径定义记录器,而不是 Actor 的类所属的包?

【问题讨论】:

    标签: playframework akka logback


    【解决方案1】:

    仅当LogSource.getClazz 方法返回类akka.event.DummyClassForStringSources 时,才会根据logSource 字符串选择记录器。既然你已经写了你的LogSource,只需覆盖显示here

    决定它的代码可以在here找到。

    【讨论】:

    • 完美...我不知道我是怎么错过的。答案一直盯着我看。重新实现 LogSource::getClazz 并且一切正常。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 2019-12-19
    相关资源
    最近更新 更多