如何使用 Spring Sleuth 记录 MDC?
How to log MDC with Spring 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 添加到我的日志中,例如合同参考。我想要这样的日志:
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 添加标签;
- 将 logging.pattern.level=%5p %mdc 添加到我的 application.properties 文件 MDC.put(xxx, xxx)
如何将自定义 MDC/tags 添加到我的日志中?
对于 2.x 之前的版本,您必须创建自己的 SpanLogger
实现。最简单的方法是扩展 Slf4jSpanLogger
并提供您自己的代码来添加/更新和删除 MDC 上下文中的条目。然后您可以更改您的日志记录模式,这样您的日志将包含他们需要的内容。
通过执行 MDC.put("yourCoolKey", "your cool value")
(参见 MDC.put JavaDoc),我能够相当轻松地将数据添加到 MDC。
将 put
值放入 MDC
后,您可以在日志记录模式中使用序列 %X{yourCoolKey}
(在我的例子中,logging.pattern.console
的值)打印字符串 "your cool value"
作为每个日志语句的一部分。
可选地,您可以通过在键后添加 :-<defaultValue>
来指定模式字符串中的默认值,例如 %X{yourCoolKey:-N/A}
,这将在 MDC 执行时打印字符串 "N/A"
没有 "yourCoolKey"
的条目。如果不指定,默认为空字符串 (""
)
我有一个 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 添加到我的日志中,例如合同参考。我想要这样的日志:
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 添加标签;
- 将 logging.pattern.level=%5p %mdc 添加到我的 application.properties 文件 MDC.put(xxx, xxx)
如何将自定义 MDC/tags 添加到我的日志中?
对于 2.x 之前的版本,您必须创建自己的 SpanLogger
实现。最简单的方法是扩展 Slf4jSpanLogger
并提供您自己的代码来添加/更新和删除 MDC 上下文中的条目。然后您可以更改您的日志记录模式,这样您的日志将包含他们需要的内容。
通过执行 MDC.put("yourCoolKey", "your cool value")
(参见 MDC.put JavaDoc),我能够相当轻松地将数据添加到 MDC。
将 put
值放入 MDC
后,您可以在日志记录模式中使用序列 %X{yourCoolKey}
(在我的例子中,logging.pattern.console
的值)打印字符串 "your cool value"
作为每个日志语句的一部分。
可选地,您可以通过在键后添加 :-<defaultValue>
来指定模式字符串中的默认值,例如 %X{yourCoolKey:-N/A}
,这将在 MDC 执行时打印字符串 "N/A"
没有 "yourCoolKey"
的条目。如果不指定,默认为空字符串 (""
)