本文将指导开发者如何在应用代码中集成获取 TraceID和将 TraceID 添加到应用日志的方法,适合具有一定开发经验的后端开发人员。
业务日志与 TraceID 关联
目录
背景
-
为了将一次请求中自动发送的多个 span(单次请求调用的不同模块/节点/服务)正确关联成一个 trace,服务的 HTTP 请求头中会携带 TraceID 及其他用于关联 trace 的信息。
-
一个 trace 代表一次请求的调用过程,TraceID 是标识该请求的唯一 ID。日志中带有 TraceID 后,可以将 trace 与应用日志关联起来。
基于以上背景,本文将说明如何从 HTTP 请求头中获取 TraceID 并添加到应用日志中,使您能够在平台上通过 TraceID 精准查询日志数据。
在 Java 应用日志中添加 TraceID
-
以下示例基于 Spring Boot 框架,分别以 Log4j 和 Logback 为例说明。
-
您的应用需满足以下前置条件:
-
日志库类型及版本需满足以下要求:
-
应用已注入 Java Agent。
-
方法一:配置 logging.pattern.level
在应用配置中修改 logging.pattern.level 参数如下:
方法二:配置 CONSOLE_LOG_PATTERN
-
修改 logback 配置文件如下。
TIP此处以控制台输出为例,
%X{trace_id}表示从 MDC 中获取键为trace_id的值。 -
在需要输出日志的类中添加
@Slf4j注解,并使用 log 对象输出日志,示例如下:
在 Python 应用日志中添加 TraceID
-
在应用代码中添加如下代码,从请求头中获取 TraceID。示例代码如下,可根据需要调整:
TIPgetForwardHeaders 函数从请求头中获取 trace 信息,其中
x-b3-traceid的值即为 TraceID。 -
在应用代码中添加如下代码,将获取的 TraceID 添加到日志中。示例代码如下,可根据需要调整:
验证方法
-
点击左侧导航栏的 Tracing。
-
在查询条件中选择 TraceID,输入要查询的 TraceID,点击 Add to query。
-
在下方显示的 trace 数据中,点击 TraceID 旁的 View Log。
-
在 Log Query 页面,勾选 Contain Trace ID,系统将只展示包含该 TraceID 的日志数据。