Working PR to capture all the changes required to update to otel java 1.19.0. The new log API force allows `:instrumentation-appender-api-internal` and `:instrumentation-appender-sdk-internal`, but necessitates a decent amount of refactoring as a result. The PR points at the `1.19.0-SNAPSHOT`, which I'll update upon publication. Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com> Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com> Co-authored-by: Lauri Tulmin <ltulmin@splunk.com> |
||
|---|---|---|
| .. | ||
| src | ||
| README.md | ||
| build.gradle.kts | ||
README.md
Log4j2 Appender
This module provides a Log4j2 appender which forwards Log4j2 log events to the OpenTelemetry Log SDK.
To use it, add the following modules to your application's classpath.
Replace OPENTELEMETRY_VERSION with the latest
stable release.
Maven
<dependencies>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-log4j-appender-2.17</artifactId>
<version>OPENTELEMETRY_VERSION</version>
</dependency>
</dependencies>
Gradle
dependencies {
runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-log4j-appender-2.17:OPENTELEMETRY_VERSION")
}
The following demonstrates how you might configure the appender in your log4j.xml configuration:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" packages="io.opentelemetry.instrumentation.log4j.appender.v2_17">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} trace_id: %X{trace_id} span_id: %X{span_id} trace_flags: %X{trace_flags} - %msg%n"/>
</Console>
<OpenTelemetry name="OpenTelemetryAppender"/>
</Appenders>
<Loggers>
<Root>
<AppenderRef ref="OpenTelemetryAppender" level="All"/>
<AppenderRef ref="Console" level="All"/>
</Root>
</Loggers>
</Configuration>
Next, configure GlobalLoggerProvider with an SdkLoggerProvider in your application.
SdkLoggerProvider sdkLoggerProvider =
SdkLoggerProvider.builder()
.setResource(Resource.create(...))
.addLogProcessor(...)
.build();
GlobalLoggerProvider.set(sdkLoggerProvider);
In this example Log4j2 log events will be sent to both the console appender and
the OpenTelemetryAppender, which will drop the logs until GlobalLoggerProvider.set(..) is
called. Once initialized, logs will be emitted to a Logger obtained from the SdkLoggerProvider.