当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Sleuth记录MDC?

高才
2023-03-14

我有一个基于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/标记添加到日志?

共有2个答案

沃学
2023-03-14

通过执行MDC,我可以相当轻松地将数据添加到MDC。put(“yourCoolKey”,“your cool value”)(请参阅MDC.put JavaDoc)。

将值放入MDC后,可以在日志模式(在我的示例中,是日志模式控制台的值)中使用序列X{yourCoolKey}来打印字符串“your cool value”,作为每个日志语句的一部分。

或者,您可以通过添加来指定模式字符串中的默认值:-

颜君浩
2023-03-14

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

 类似资料:
  • Java16引入了记录,这有助于在编写携带不可变数据的类时减少样板代码。当我尝试将记录用作bean时,我得到以下错误消息: 如何将记录用作?

  • 问题内容: 我有下面的代码删除mysql记录,我想对其进行转换,因此它将是ajax / jquery代码,因此从表中删除记录后,我可以留在同一页上。现在,它工作正常,但不在同一页面上,我需要刷新页面以查看结果。这只是完整代码的一部分。所有代码都在一页上。 问题答案: Delete 现在在本节中写下 现在在“ delete_page.php”页面中执行此操作 休息,我希望你知道。希望这可以帮助

  • 我在测试中有一段代码,使用Hamcrest 2.2检查结果列表是否包含某些属性: 当是一个普通的类时,这个工作非常好。但是在我将它更改为之后,Hamcrest的抱怨没有名为的属性: 是否有其他匹配器可以用来实现与之前相同的匹配?或者其他解决方法可以用来让它与记录一起工作?

  • 本文向大家介绍如何使用MySQL LIMIT订购记录并获取一些记录?,包括了如何使用MySQL LIMIT订购记录并获取一些记录?的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查询以选择MySQL中的最后n行。在这里,我们首先在ASC中对其进行排序,并显示前4条记录- 这将产生

  • 我下载了kafka-clients-0.9.0.0。jar与maven一起使用,我希望我会看到类似于Kafka日志链接中的日志记录 然而,我不知道为什么我没有得到任何日志记录,即使我设置了引导。purpuse上的服务器错误,但它只是在没有发出任何警告的情况下被卡住了。我添加了几行代码以使用log4j打印到一个文件中,这似乎是可行的,但不知道为什么Kafka不能将事件记录到log4j中。 请注意,s

  • 问题内容: 我试图弄清楚如何从由分隔的多行记录中提取特定字段。 在这种情况下,它恰巧是从apt-cache类似于DEBIAN控制文件输出的。查看输出 我想要的输出是格式中的每条记录一行。基本上是可用软件包的安装命令列表… 到目前为止,我所拥有的是 这是实际输出: 是所需的,但似乎只是a幸,因为在此示例中字段的顺序是一致的。如果字段的顺序不同,则会中断。 我可以在Python中使用面向对象来进行此类