通过腾讯云 OpenTelementry 增强版 Java 探针接入 APM 后,可在应用日志中轻松输出上下文 TraceID 和 SpanID,只需要修改日志配置文件中的 pattern, 即可实现 TraceID 和 SpanID 的注入。OpenTelementry 增强版 Java 探针的日志注入功能支持如下日志框架:
Log4j 1.2+
Log4j2 2.7+
Logback 1.0+
在日志配置文件中,TraceID 和 SpanID 分别使用
%X{trace_id}
和 %X{span_id}
字段注入,如果上下文没有TraceID 或 SpanID,不会影响整行日志的输出。Log4j
log4j.properties 文件修改示例:
log4j.appender.warn.layout=org.apache.log4j.PatternLayoutlog4j.appender.warn.layout.ConversionPattern=traceId: %X{trace_id} spanId: %X{span_id} - %m%n
Log4j2
Log4j2支持多种格式配置文件,包括 XML、Json、YAML、Properties 等。以 XML 格式为例,Pattern 有多种写法,请根据已有的写法参考其中一种:
<PatternLayout pattern="traceId: %X{trace_id} spanId: %X{span_id} - %m%n"/>
<PatternLayout><Pattern>traceId: %X{trace_id} spanId: %X{span_id} - %m%n</Pattern></PatternLayout>
<Layout type="PatternLayout" pattern="traceId: %X{trace_id} spanId: %X{span_id} - %m%n"/>
Logback
logback.xml 文件修改示例:
<encoder><pattern>traceId: %X{trace_id} spanId: %X{span_id} %msg%n</pattern></encoder>
输出效果
当上下文存在 TraceID 和 SpanID 时:
当上下文不存在 TraceID 和 SpanID 时: