Add SdkLogEmitterProvider to OpenTelemetrySdk (#3992)
This commit is contained in:
parent
32f7138131
commit
bbbde5dfde
|
|
@ -18,6 +18,9 @@ dependencies {
|
||||||
// implementation dependency to require users to add the artifact directly to their build to use
|
// implementation dependency to require users to add the artifact directly to their build to use
|
||||||
// SdkMeterProviderBuilder.
|
// SdkMeterProviderBuilder.
|
||||||
implementation(project(":sdk:metrics"))
|
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")
|
annotationProcessor("com.google.auto.value:auto-value")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import io.opentelemetry.api.trace.Tracer;
|
||||||
import io.opentelemetry.api.trace.TracerBuilder;
|
import io.opentelemetry.api.trace.TracerBuilder;
|
||||||
import io.opentelemetry.api.trace.TracerProvider;
|
import io.opentelemetry.api.trace.TracerProvider;
|
||||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||||
|
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
|
||||||
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
||||||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||||
import javax.annotation.concurrent.ThreadSafe;
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
|
|
@ -21,14 +22,17 @@ import javax.annotation.concurrent.ThreadSafe;
|
||||||
public final class OpenTelemetrySdk implements OpenTelemetry {
|
public final class OpenTelemetrySdk implements OpenTelemetry {
|
||||||
private final ObfuscatedTracerProvider tracerProvider;
|
private final ObfuscatedTracerProvider tracerProvider;
|
||||||
private final ObfuscatedMeterProvider meterProvider;
|
private final ObfuscatedMeterProvider meterProvider;
|
||||||
|
private final SdkLogEmitterProvider logEmitterProvider;
|
||||||
private final ContextPropagators propagators;
|
private final ContextPropagators propagators;
|
||||||
|
|
||||||
OpenTelemetrySdk(
|
OpenTelemetrySdk(
|
||||||
SdkTracerProvider tracerProvider,
|
SdkTracerProvider tracerProvider,
|
||||||
SdkMeterProvider meterProvider,
|
SdkMeterProvider meterProvider,
|
||||||
|
SdkLogEmitterProvider logEmitterProvider,
|
||||||
ContextPropagators propagators) {
|
ContextPropagators propagators) {
|
||||||
this.tracerProvider = new ObfuscatedTracerProvider(tracerProvider);
|
this.tracerProvider = new ObfuscatedTracerProvider(tracerProvider);
|
||||||
this.meterProvider = new ObfuscatedMeterProvider(meterProvider);
|
this.meterProvider = new ObfuscatedMeterProvider(meterProvider);
|
||||||
|
this.logEmitterProvider = logEmitterProvider;
|
||||||
this.propagators = propagators;
|
this.propagators = propagators;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -60,6 +64,11 @@ public final class OpenTelemetrySdk implements OpenTelemetry {
|
||||||
return meterProvider.unobfuscate();
|
return meterProvider.unobfuscate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns the {@link SdkLogEmitterProvider} for this {@link OpenTelemetrySdk}. */
|
||||||
|
public SdkLogEmitterProvider getSdkLogEmitterProvider() {
|
||||||
|
return logEmitterProvider;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ContextPropagators getPropagators() {
|
public ContextPropagators getPropagators() {
|
||||||
return propagators;
|
return propagators;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ package io.opentelemetry.sdk;
|
||||||
|
|
||||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
import io.opentelemetry.api.GlobalOpenTelemetry;
|
||||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||||
|
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
|
||||||
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
||||||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||||
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
|
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
|
||||||
|
|
@ -18,6 +19,7 @@ public final class OpenTelemetrySdkBuilder {
|
||||||
private ContextPropagators propagators = ContextPropagators.noop();
|
private ContextPropagators propagators = ContextPropagators.noop();
|
||||||
@Nullable private SdkTracerProvider tracerProvider;
|
@Nullable private SdkTracerProvider tracerProvider;
|
||||||
@Nullable private SdkMeterProvider meterProvider;
|
@Nullable private SdkMeterProvider meterProvider;
|
||||||
|
@Nullable private SdkLogEmitterProvider logEmitterProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Package protected to disallow direct initialization.
|
* Package protected to disallow direct initialization.
|
||||||
|
|
@ -49,6 +51,18 @@ public final class OpenTelemetrySdkBuilder {
|
||||||
return this;
|
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. */
|
/** Sets the {@link ContextPropagators} to use. */
|
||||||
public OpenTelemetrySdkBuilder setPropagators(ContextPropagators propagators) {
|
public OpenTelemetrySdkBuilder setPropagators(ContextPropagators propagators) {
|
||||||
this.propagators = propagators;
|
this.propagators = propagators;
|
||||||
|
|
@ -91,6 +105,11 @@ public final class OpenTelemetrySdkBuilder {
|
||||||
meterProvider = SdkMeterProvider.builder().build();
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import io.opentelemetry.api.trace.TracerProvider;
|
||||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||||
import io.opentelemetry.context.propagation.TextMapPropagator;
|
import io.opentelemetry.context.propagation.TextMapPropagator;
|
||||||
import io.opentelemetry.sdk.common.Clock;
|
import io.opentelemetry.sdk.common.Clock;
|
||||||
|
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
|
||||||
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
|
||||||
import io.opentelemetry.sdk.resources.Resource;
|
import io.opentelemetry.sdk.resources.Resource;
|
||||||
import io.opentelemetry.sdk.trace.IdGenerator;
|
import io.opentelemetry.sdk.trace.IdGenerator;
|
||||||
|
|
@ -36,6 +37,7 @@ class OpenTelemetrySdkTest {
|
||||||
|
|
||||||
@Mock private SdkTracerProvider tracerProvider;
|
@Mock private SdkTracerProvider tracerProvider;
|
||||||
@Mock private SdkMeterProvider meterProvider;
|
@Mock private SdkMeterProvider meterProvider;
|
||||||
|
@Mock private SdkLogEmitterProvider logEmitterProvider;
|
||||||
@Mock private ContextPropagators propagators;
|
@Mock private ContextPropagators propagators;
|
||||||
@Mock private Clock clock;
|
@Mock private Clock clock;
|
||||||
|
|
||||||
|
|
@ -115,6 +117,7 @@ class OpenTelemetrySdkTest {
|
||||||
OpenTelemetrySdk.builder()
|
OpenTelemetrySdk.builder()
|
||||||
.setTracerProvider(tracerProvider)
|
.setTracerProvider(tracerProvider)
|
||||||
.setMeterProvider(meterProvider)
|
.setMeterProvider(meterProvider)
|
||||||
|
.setLogEmitterProvider(logEmitterProvider)
|
||||||
.setPropagators(propagators)
|
.setPropagators(propagators)
|
||||||
.build();
|
.build();
|
||||||
assertThat(
|
assertThat(
|
||||||
|
|
@ -126,7 +129,7 @@ class OpenTelemetrySdkTest {
|
||||||
((OpenTelemetrySdk.ObfuscatedMeterProvider) openTelemetry.getMeterProvider())
|
((OpenTelemetrySdk.ObfuscatedMeterProvider) openTelemetry.getMeterProvider())
|
||||||
.unobfuscate())
|
.unobfuscate())
|
||||||
.isEqualTo(meterProvider);
|
.isEqualTo(meterProvider);
|
||||||
assertThat(openTelemetry.getSdkMeterProvider()).isEqualTo(meterProvider);
|
assertThat(openTelemetry.getSdkLogEmitterProvider()).isEqualTo(logEmitterProvider);
|
||||||
assertThat(openTelemetry.getPropagators()).isEqualTo(propagators);
|
assertThat(openTelemetry.getPropagators()).isEqualTo(propagators);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue