【发布时间】:2014-09-27 21:25:27
【问题描述】:
我正在配置我的 Akka 应用程序以使用此处指定的 SLF4J 记录器:
http://doc.akka.io/docs/akka/2.3.4/scala/logging.html
在底层,我依靠 Logback 来进行日志记录。我正在开发一个用于记录目的的通用模块,用户可以在他们的参与者系统中使用它。主要是,我正在创建一个他们可以混合的特征。
我有一个特点:
我有这样的东西:
trait ActorLogger {
val log: DiagnosticLoggingAdapter = Logging(this);
}
我有一些额外的逻辑可以将 MDC 值添加到 DiagnosticLoggingAdapter 的 MDC。 现在的问题是:如果用户想要混入他们的非参与者类,我会完全公开一个不同的记录器。所以我可能会有这样的事情:
trait ClassLogger {
val log = LoggerFactory getLogger getClass.getName
}
我希望将 MDC 值传递到此记录器。例如,如果我将 MDC 值放入我的 DiagnosticAdapterLogger,我应该能够从 org.slf4j.MDC 中获取这些值
如何以干净的方式实现这一点?
谢谢!
【问题讨论】:
-
此人的博客文章与您想要的类似。它确保跨线程和参与者复制 MDC:yanns.github.io/blog/2014/05/04/…