使用 slf4j 传播 MDC
Propagate MDC using slf4j
我在基于 akka 的应用程序中使用 slf4j,并使用其 MDC 功能记录上下文信息。我有一个基本演员,他发送和接收来自一组演员的消息,这些演员又与另一个演员进行交流,依此类推。如何将基础 actor 中的 MDC 设置传播到其他 actor?我想避免使用像 Play 这样的额外框架。
方法一:
使用 Akka 的接收管道功能 - http://doc.akka.io/docs/akka/2.4.16/contrib/receive-pipeline.html
使用接收管道的示例解决方案 -
方法二:
1.Creating 扩展 Actor 的特征
2.Override aroundReceive方法填充MDC
3.Creating ask_and_forget 的新方法,并使用 mdc 发送消息
并在内部提取它
方法三:
1. 创建一个在收到消息时处理 MDC 的特征,并混合每个 Actor。
(假设每个 Actor 的传入消息将始终具有所需的
用于填充 MDC 的字段)。
我更喜欢方法 1 和 3,因为它们对应用程序引入的破坏性变化最少,并且对于任何将在使用这两种方法的现有应用程序上工作的新开发人员来说都显得更加直观。
我在基于 akka 的应用程序中使用 slf4j,并使用其 MDC 功能记录上下文信息。我有一个基本演员,他发送和接收来自一组演员的消息,这些演员又与另一个演员进行交流,依此类推。如何将基础 actor 中的 MDC 设置传播到其他 actor?我想避免使用像 Play 这样的额外框架。
方法一: 使用 Akka 的接收管道功能 - http://doc.akka.io/docs/akka/2.4.16/contrib/receive-pipeline.html
使用接收管道的示例解决方案 -
方法二: 1.Creating 扩展 Actor 的特征 2.Override aroundReceive方法填充MDC 3.Creating ask_and_forget 的新方法,并使用 mdc 发送消息 并在内部提取它
方法三: 1. 创建一个在收到消息时处理 MDC 的特征,并混合每个 Actor。 (假设每个 Actor 的传入消息将始终具有所需的 用于填充 MDC 的字段)。
我更喜欢方法 1 和 3,因为它们对应用程序引入的破坏性变化最少,并且对于任何将在使用这两种方法的现有应用程序上工作的新开发人员来说都显得更加直观。