关于scala:使用slf4j传播MDC

Propagate MDC using slf4j

我在基于 akka 的应用程序中使用 slf4j,并使用其 MDC 功能来记录上下文信息。我有一个基本演员,他从一组演员那里发送和接收消息,这些演员又与另一个演员进行通信等等。如何将基本角色中的 MDC 设置传播到其他角色?我想避免使用像 Play 这样的额外框架。


方法一:
使用 Akka 的接收管道功能 - http://doc.akka.io/docs/akka/2.4.16/contrib/receive-pipeline.html

使用接收管道的示例解决方案 -
https://stackoverflow.com/a/39320938/3076069

方法 2:
1.创建一个继承Actor的trait
2.覆盖方法aroundReceive来填充MDC
3.为 ask_and_forget 和 send 创建新方法,用 mdc 发送消息
并在内部提取它

方法 3:
1. 创建一个 trait 来处理接收消息的 MDC 并混合每个 Actor。
(假设每个 Actor 的传入消息将始终具有所需的
用于填充 MDC 的字段)。

我更喜欢方法 1 和方法 3,因为它们对应用程序引入的破坏性更改最少,并且对于任何将在使用这两种方法的现有应用程序上工作的新开发人员来说显得更直观。