Java TraceId and SpanId Injection into Logs Configuration
This page describes how to configure spanId and traceId data injection into user logs in Java applications.
Log4j instrumentation
- Add instrumented Log4j2 and OpenTelemetry-api libraries into the project dependencies:
- Maven projects
<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-log4j-context-data-2.17-autoconfigure</artifactId>
<version>2.6.0-alpha</version>
<scope>runtime</scope>
</dependency>
</dependencies> - Gradle projects
dependencies {
runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-log4j-context-data-2.17-autoconfigure:2.6.0-alpha")
}
- Maven projects
- Update the log4j2.xml configuration file, typically stored in resources directory, with
traceId
,spanId
, andsampled
keys. The following is an example configuration.<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} traceId: %X{trace_id} spanId: %X{span_id} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="All" >
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Logback instrumentation
- Add instrumented logback library into the project dependencies:
- Maven projects
<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-logback-mdc-1.0</artifactId>
<version>2.6.0-alpha</version>
<scope>runtime</scope>
</dependency>
</dependencies> - Gradle projects
dependencies {
runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-logback-mdc-1.0:2.6.0-alpha")
}
- Maven projects
- Update the logback.xml configuration file, typically stored in the resources directory, with
traceId
,spanId
, andsampled
keys. The following is an example configuration.<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern><![CDATA[%date{HH:mm:ss.SSS} [%thread] %-5level %logger{15}#%line %X{req.requestURI} traceId: %X{trace_id} spanId: %X{span_id} %msg\n]]></pattern>
</encoder>
</appender>
<appender name="OTEL" class="io.opentelemetry.instrumentation.logback.v1_0.OpenTelemetryAppender">
<appender-ref ref="STDOUT" />
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
note
For more details, refer to the Logger MDC auto-instrumentation.