The intention here is to allow users of the java agent to set a VM flag in order to be able to add values in the current Baggage context to MDC for logback. It seemed unwise to turn this on by default - if the application is configured to print all MDC contents (as it often the case with JSON output) then baggage would be logged out by default which may either bloat the logs or result in sensitive data being exposed unitentionally. Addresses #1391 and #6708 Note that this is my first contribution to this repo, I've done my best to follow the existing approaches to things like testing but would appreciate any feedback. --------- Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com> |
||
---|---|---|
.. | ||
src | ||
README.md | ||
build.gradle.kts |
README.md
MDC Instrumentation for Logback version 1.0 and higher
This module integrates instrumentation with Logback by injecting the trace ID and span ID from a mounted span using a custom Logback appender.
Quickstart
Add these dependencies to your project
Replace OPENTELEMETRY_VERSION
with the latest
release.
For Maven, add to your pom.xml
dependencies:
<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-logback-mdc-1.0</artifactId>
<version>OPENTELEMETRY_VERSION</version>
</dependency>
</dependencies>
For Gradle, add to your dependencies:
dependencies {
runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-logback-mdc-1.0:OPENTELEMETRY_VERSION")
}
Usage
logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} trace_id=%X{trace_id} span_id=%X{span_id} trace_flags=%X{trace_flags} %msg%n</pattern>
</encoder>
</appender>
<!-- Just wrap your logging appender, for example ConsoleAppender, with OpenTelemetryAppender -->
<appender name="OTEL" class="io.opentelemetry.instrumentation.logback.v1_0.OpenTelemetryAppender">
<appender-ref ref="CONSOLE"/>
</appender>
...
</configuration>
Logging events will automatically have context information from the span context injected. The following attributes are available for use:
trace_id
span_id
trace_flags