Add SdkLogEmitterProvider to OpenTelemetrySdk (#3992)

This commit is contained in:
jack-berg 2021-12-15 22:42:38 -06:00 committed by GitHub
parent 32f7138131
commit bbbde5dfde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 2 deletions

View File

@ -18,6 +18,9 @@ dependencies {
// implementation dependency to require users to add the artifact directly to their build to use
// SdkMeterProviderBuilder.
implementation(project(":sdk:metrics"))
// implementation dependency to require users to add the artifact directly to their build to use
// SdkLogEmitterProvider.
implementation(project(":sdk:logs"))
annotationProcessor("com.google.auto.value:auto-value")

View File

@ -12,6 +12,7 @@ import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.TracerBuilder;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import javax.annotation.concurrent.ThreadSafe;
@ -21,14 +22,17 @@ import javax.annotation.concurrent.ThreadSafe;
public final class OpenTelemetrySdk implements OpenTelemetry {
private final ObfuscatedTracerProvider tracerProvider;
private final ObfuscatedMeterProvider meterProvider;
private final SdkLogEmitterProvider logEmitterProvider;
private final ContextPropagators propagators;
OpenTelemetrySdk(
SdkTracerProvider tracerProvider,
SdkMeterProvider meterProvider,
SdkLogEmitterProvider logEmitterProvider,
ContextPropagators propagators) {
this.tracerProvider = new ObfuscatedTracerProvider(tracerProvider);
this.meterProvider = new ObfuscatedMeterProvider(meterProvider);
this.logEmitterProvider = logEmitterProvider;
this.propagators = propagators;
}
@ -60,6 +64,11 @@ public final class OpenTelemetrySdk implements OpenTelemetry {
return meterProvider.unobfuscate();
}
/** Returns the {@link SdkLogEmitterProvider} for this {@link OpenTelemetrySdk}. */
public SdkLogEmitterProvider getSdkLogEmitterProvider() {
return logEmitterProvider;
}
@Override
public ContextPropagators getPropagators() {
return propagators;

View File

@ -7,6 +7,7 @@ package io.opentelemetry.sdk;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
@ -18,6 +19,7 @@ public final class OpenTelemetrySdkBuilder {
private ContextPropagators propagators = ContextPropagators.noop();
@Nullable private SdkTracerProvider tracerProvider;
@Nullable private SdkMeterProvider meterProvider;
@Nullable private SdkLogEmitterProvider logEmitterProvider;
/**
* Package protected to disallow direct initialization.
@ -49,6 +51,18 @@ public final class OpenTelemetrySdkBuilder {
return this;
}
/**
* Sets the {@link SdkLogEmitterProvider} to use. This can be used to configure log settings by
* returning the instance created by a {@link
* io.opentelemetry.sdk.logs.SdkLogEmitterProviderBuilder}.
*
* @see SdkLogEmitterProvider#builder()
*/
public OpenTelemetrySdkBuilder setLogEmitterProvider(SdkLogEmitterProvider logEmitterProvider) {
this.logEmitterProvider = logEmitterProvider;
return this;
}
/** Sets the {@link ContextPropagators} to use. */
public OpenTelemetrySdkBuilder setPropagators(ContextPropagators propagators) {
this.propagators = propagators;
@ -91,6 +105,11 @@ public final class OpenTelemetrySdkBuilder {
meterProvider = SdkMeterProvider.builder().build();
}
return new OpenTelemetrySdk(tracerProvider, meterProvider, propagators);
SdkLogEmitterProvider logEmitterProvider = this.logEmitterProvider;
if (logEmitterProvider == null) {
logEmitterProvider = SdkLogEmitterProvider.builder().build();
}
return new OpenTelemetrySdk(tracerProvider, meterProvider, logEmitterProvider, propagators);
}
}

View File

@ -17,6 +17,7 @@ import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator;
import io.opentelemetry.sdk.common.Clock;
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.trace.IdGenerator;
@ -36,6 +37,7 @@ class OpenTelemetrySdkTest {
@Mock private SdkTracerProvider tracerProvider;
@Mock private SdkMeterProvider meterProvider;
@Mock private SdkLogEmitterProvider logEmitterProvider;
@Mock private ContextPropagators propagators;
@Mock private Clock clock;
@ -115,6 +117,7 @@ class OpenTelemetrySdkTest {
OpenTelemetrySdk.builder()
.setTracerProvider(tracerProvider)
.setMeterProvider(meterProvider)
.setLogEmitterProvider(logEmitterProvider)
.setPropagators(propagators)
.build();
assertThat(
@ -126,7 +129,7 @@ class OpenTelemetrySdkTest {
((OpenTelemetrySdk.ObfuscatedMeterProvider) openTelemetry.getMeterProvider())
.unobfuscate())
.isEqualTo(meterProvider);
assertThat(openTelemetry.getSdkMeterProvider()).isEqualTo(meterProvider);
assertThat(openTelemetry.getSdkLogEmitterProvider()).isEqualTo(logEmitterProvider);
assertThat(openTelemetry.getPropagators()).isEqualTo(propagators);
}