Anuraag Agrawal f6bcd76219 Update errorprone (#5016) 3 lat temu
..
src f6bcd76219 Update errorprone (#5016) 3 lat temu
README.md 935cb88ff4 Add logback appender (#4984) 3 lat temu
build.gradle.kts 7c58220d65 Fix logback testLatestDeps (#5010) 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>
    <scope>runtime</scope>
  </dependency>
  <dependency>
    <!-- The SDK appender is required to configure the appender with the OpenTelemetry Log SDK -->
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-instrumentation-sdk-appender</artifactId>
    <version>OPENTELEMETRY_VERSION</version>
  </dependency>
</dependencies>

Gradle

dependencies {
  runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:OPENTELEMETRY_VERSION")
  // The SDK appender is required to configure the appender with the OpenTelemetry Log SDK
  implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-sdk-appender: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 OpenTelemetry configured via logback.xml with a SdkLogEmitterProvider in your application:

SdkLogEmitterProvider logEmitterProvider =
  SdkLogEmitterProvider.builder()
    .setResource(Resource.create(...))
    .addLogProcessor(...)
    .build();
GlobalLogEmitterProvider.set(DelegatingLogEmitterProvider.from(logEmitterProvider));

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