本文将指导开发人员如何在应用程序代码中集成获取 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 的日志数据。