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

时间:2019-10-22 13:17:32

标签: spring-boot logback datadog opentracing distributed-tracing

好的,我花了一些时间来弄清楚如何配置一些东西,以使其在日志中具有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 个答案:

答案 0 :(得分:1)

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

如果您的日志是原始格式,请更新格式器以包括 dd.trace_iddd.span_id在记录器配置中:

<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},它应该可以工作。

答案 1 :(得分:0)

您是否能够在发送的日志中添加一些参数。从the documentation,您应该能够以Datadog解释日志的方式将跟踪ID注入日志。

您还可以查看解析器,以从原始日志中提取跟踪ID和跨度ID。 This documentation应该会帮助您。