如何使用Spring Boot + Logback在日志中添加DataDog跟踪ID

3

好的,我花了相当长的时间来解决如何配置数据狗(DataDog)跟踪ID在日志中的问题,但是无法使其正常工作。明确一下,我想要的是在日志消息中看到跟踪ID,就像将spring-cloud-starter-sleuth添加到类路径中一样,自动配置Slf4j/Logback以在日志消息中显示跟踪ID。

我的起点:

  1. 我们有一个简单的Web Spring Boot应用程序,作为Docker容器运行,并部署为AWS Elastic BeansTalk,其日志进入CloudWatch,我们从那里读取它们。
  2. 我们将DataDog作为Java代理(因此没有在pom.xml中添加依赖项)
  3. 我们在依赖列表中使用SLF4J/Logback。
  4. 没有其他相关的依赖项(例如dd-trace-ot或任何opertracing库)

我目前做了什么:

  1. 我在SO上发现添加opentracing-spring-cloud-starter会自动添加日志集成。但我无法使其正常工作。
  2. 在DD网站上,它说配置模式就足以看到ID,但在我们的情况下,它没有起作用。(难道是因为我们的日志不是JSON格式?)另外,添加dd-trace-ot也没有帮助。

注意:

  1. 我们不能切换到JSON日志。
  2. 我们不能切换到任何其他库(例如Slueth)。
  3. 我们不能离开CloudWatch。

有人能告诉我需要如何配置应用程序才能在日志消息中看到跟踪ID吗?是否有文档或示例可以参考?

2个回答

2

您是否有能力在发送的日志中添加一些参数?从文档中,您应该能够以Datadog可以解释的方式将跟踪ID注入到日志中。

您还可以查看解析器,以从原始日志中提取跟踪ID和跨度ID。此文档应该对您有所帮助。


这是有关在使用SLF4J/Logback时进行跟踪ID注入的具体文档页面:https://docs.datadoghq.com/tracing/connect_logs_and_traces/java/?tab=slf4jlogback。顺便说一句,FWIW。 - stephenlechner

1

根据文档,如果您没有JSON日志,则需要在格式化程序中包含dd.trace_iddd.span_id

If your logs are raw formatted, update your formatter to include dd.trace_id and dd.span_id in your logger configuration:

<Pattern>"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L -
%X{dd.trace_id:-0} %X{ dd.span_id:-0} - %m%n"</Pattern> ```
如果您添加了%X{dd.trace_id:-0} %X{ dd.span_id:-0},它应该能够正常工作。

注意:您还需要手动关联您的日志。 - null

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接