Trask Stalnaker b0e4be0e5f Capture logback formatted message (#5497) 3 lat temu
..
src b0e4be0e5f Capture logback formatted message (#5497) 3 lat temu
README.md f7da97bd9d Move appender api to internal (#5080) 3 lat temu
build.gradle.kts 7df2b0e2df Don't run testLatestDeps on alpha/beta/rc versions (#5258) 3 lat temu

README.md

Logback Appender

This module provides a Logback appender which forwards Logback 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-logback-appender-1.0</artifactId>
    <version>OPENTELEMETRY_VERSION</version>
  </dependency>
</dependencies>

Gradle

dependencies {
  runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:OPENTELEMETRY_VERSION")
}

The following demonstrates how you might configure the appender in your logback.xml configuration:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>
        %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
      </pattern>
    </encoder>
  </appender>
  <appender name="OpenTelemetry"
            class="io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender">
  </appender>

  <root level="INFO">
    <appender-ref ref="console"/>
    <appender-ref ref="OpenTelemetry"/>
  </root>

</configuration>

Next, associate the OpenTelemetryAppender configured via logback.xml with an SdkLogEmitterProvider in your application:

SdkLogEmitterProvider logEmitterProvider =
  SdkLogEmitterProvider.builder()
    .setResource(Resource.create(...))
    .addLogProcessor(...)
    .build();
OpenTelemetryAppender.setSdkLogEmitterProvider(logEmitterProvider);

In this example Logback log events will be sent to both the console appender and the OpenTelemetryAppender, which will drop the logs until OpenTelemetryAppender.setSdkLogEmitterProvider(..) is called. Once initialized, logs will be emitted to a LogEmitter obtained from the SdkLogEmitterProvider.