3

我有一个基于 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

我尝试了各种没有成功的事情:

  1. 使用 Spring Sleuth Tracer 添加标签;
  2. 使用 MDC.put(xxx, xxx) 将 logging.pattern.level=%5p %mdc 添加到我的 application.properties 文件中

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

4

2 回答 2

4

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

于 2017-05-04T16:21:12.400 回答
0

通过这样做,我能够相当容易地将数据添加到 MDC MDC.put("yourCoolKey", "your cool value")(请参阅MDC.put JavaDoc)。

put值输入 后MDC,您可以使用%X{yourCoolKey}日志记录模式中的序列(在我的情况下为 的值logging.pattern.console)将字符串打印"your cool value"为每个日志语句的一部分。

或者,您可以通过在键后添加来指定模式字符串中的默认值:-<defaultValue>,例如,只要 MDC 没有 的条目%X{yourCoolKey:-N/A},它将打印字符串。如果未指定,默认值为空字符串 ( )"N/A""yourCoolKey"""

于 2018-10-10T19:26:39.497 回答