本文将指导开发人员如何在应用代码中集成方法以 获取 TraceID 和 将 TraceID 添加到应用日志,适合具有一定开发经验的后端开发人员。
为了正确地将多个自动发送的跨度(在单个请求中调用的不同模块/节点/服务)关联到一个跟踪中,服务的 HTTP 请求头中将包括 TraceID 和其他用于关联跟踪的信息。
一个跟踪表示单个请求的调用过程,TraceID 是标识该请求的唯一 ID。在日志中包含 TraceID 后,跟踪信息可以与应用日志进行关联。
基于上述背景,本文将解释如何从 HTTP 请求头中获取 TraceID 并将其添加到应用日志中,使您能够使用 TraceID 准确查询平台上的日志数据。
以下示例基于 Spring Boot 框架,并使用 Log4j 和 Logback 进行说明。
您的应用程序必须满足以下先决条件:
日志库的类型和版本必须满足以下要求:
日志库 | 版本要求 |
---|---|
Log4j 1 | 1.2+ |
Log4j 2 | 2.7+ |
Logback | 1.0+ |
应用程序已注入 Java Agent。
方法1:配置 logging.pattern.level
修改您的应用程序配置中的 logging.pattern.level
参数,如下所示:
方法2:配置 CONSOLE_LOG_PATTERN
修改 logback 配置文件,如下所示:
此处以控制台输出为例,其中 %X{trace_id}
表示从 MDC 中检索到的键 trace_id
的值。
在需要输出日志的类中,添加 @Slf4j
注解并使用日志对象输出日志,如下所示:
在应用代码中,添加以下代码以从请求头中检索 TraceID。示例代码如下,可以根据需要进行调整:
getForwardHeaders 函数从请求头中检索跟踪信息,其中 x-b3-traceid
的值即为 TraceID。
在应用代码中,添加以下代码以将检索到的 TraceID 包含在日志中。示例代码如下,可以根据需要进行调整:
点击左侧导航栏中的 Tracing。
在查询条件中选择 TraceID,输入 TraceID 进行查询,然后点击 Add to query。
在显示的跟踪数据中,点击 TraceID 旁边的 View Log。
在 Log Query 页面上,勾选 Contain Trace ID;系统将仅显示包含 TraceID 的日志数据。