spring-boot - 如何使用 Spring Sleuth 记录 MDC?

标签 spring-boot slf4j spring-cloud-sleuth

我有一个基于 Spring Boot + sleuth 的应用程序。一切都按预期工作。我现在有这样的日志:

2017-05-04 17:55:52.226  INFO [alert,692d0eeca479e216,c3c8b680dc29ad02,false] 17292 --- [cTaskExecutor-1] c.k.a.b.s.alert.impl.AlertServiceImpl    : Alert state to process: xxx

现在,我想将自定义 MDC 添加到我的日志中,例如契约(Contract)引用。我想要这样的日志:
2017-05-04 17:55:52.226  INFO [alert,692d0eeca479e216,c3c8b680dc29ad02,false] [CONTRACT_REF] 17292 --- [cTaskExecutor-1] c.k.a.b.s.alert.impl.AlertServiceImpl    : Alert state to process: xxx

我尝试了各种方法但没有成功:
  • 使用 Spring Sleuth Tracer 添加标签;
  • 使用 MDC.put(xxx, xxx)
  • 将 logging.pattern.level=%5p %mdc 添加到我的 application.properties 文件中

    如何将自定义 MDC/标签添加到我的日志中?

    最佳答案

    对于 2.x 之前的版本,您必须创建自己的 SpanLogger 实现。 .最简单的方法是扩展 Slf4jSpanLogger并提供您自己的代码来添加/更新和删除 MDC 上下文中的条目。然后您可以更改您的日志记录模式,这样您的日志将包含他们需要的内容。

    关于spring-boot - 如何使用 Spring Sleuth 记录 MDC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787815/

    相关文章:

    java - slf4j log4j Hello World 问题

    spring - PCF 上的 128 位侦探跟踪 ID

    java - JSR - Spring Boot 的 Spring @RestController 的 349 bean 验证

    java - 无法序列化 Jackson xml 中的 OffsetDateTime

    spring - 执行集成测试时,取决于环境的不同数据库配置

    gradle - GWT、Gradle、多个 SLF4J 绑定(bind)错误

    java - 创建 Java Spring Boot 端点以获取 json 形式的对象列表

    java - SLF4J - 绑定(bind)被同一应用程序服务器上的其他应用程序覆盖

    spring-boot - 将 Spring Boot 配置文件添加到 Sleuth/Zipkin 日志

    java - 迁移到 Spring Boot 2.x 后在哪里可以找到 Sleuth 的 Span.TRACE_ID_NAME 替代品?