Luc*_*uca 5 logback mdc spring-boot project-reactor
我有一个用 spring 5 和 reactor 编写的应用程序。我在订阅者上下文中放入了一些信息,例如用户 ID。现在我想记录这个用户 ID。我正在尝试使用 MDC 但如果请求更改线程我丢失了信息。我该如何解决这个问题?有没有办法设置 MDC,以便应用程序周围的所有日志,包括外部库,我使用订阅者上下文放入的数据?我已经尝试过这里描述的内容,但它工作正常,但它不能解决我的外部库日志问题。
https://simonbasle.github.io/2018/02/contextual-logging-with-reactor-context-and-mdc/
小智 3
Spring Cloud Sleuth为此提供了解决方案
您需要将 spring cloud sleuth 依赖添加到项目中
要将自定义属性添加到 sleuth 上下文,请使用
MDC.put("userId", userId);
ExtraFieldPropagation.set("userId", userId);
Run Code Online (Sandbox Code Playgroud)
这里的“userId”是用于传播值的键
要在线程更改时传播“userId”键,请使用
spring.sleuth.propagation-keys=userId
spring.sleuth.log.slf4j.whitelisted-mdc-keys=userId
Run Code Online (Sandbox Code Playgroud)
您可以使用 logback 访问“userId”键
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout>
<Pattern>%X{userId} - %m%n</Pattern>
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1726 次 |
| 最近记录: |