Skip to content

Commit bbbde5d

Browse files
authored
Add SdkLogEmitterProvider to OpenTelemetrySdk (open-telemetry#3992)
1 parent 32f7138 commit bbbde5d

4 files changed

Lines changed: 36 additions & 2 deletions

File tree

sdk/all/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ dependencies {
1818
// implementation dependency to require users to add the artifact directly to their build to use
1919
// SdkMeterProviderBuilder.
2020
implementation(project(":sdk:metrics"))
21+
// implementation dependency to require users to add the artifact directly to their build to use
22+
// SdkLogEmitterProvider.
23+
implementation(project(":sdk:logs"))
2124

2225
annotationProcessor("com.google.auto.value:auto-value")
2326

sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdk.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.opentelemetry.api.trace.TracerBuilder;
1313
import io.opentelemetry.api.trace.TracerProvider;
1414
import io.opentelemetry.context.propagation.ContextPropagators;
15+
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
1516
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
1617
import io.opentelemetry.sdk.trace.SdkTracerProvider;
1718
import javax.annotation.concurrent.ThreadSafe;
@@ -21,14 +22,17 @@
2122
public final class OpenTelemetrySdk implements OpenTelemetry {
2223
private final ObfuscatedTracerProvider tracerProvider;
2324
private final ObfuscatedMeterProvider meterProvider;
25+
private final SdkLogEmitterProvider logEmitterProvider;
2426
private final ContextPropagators propagators;
2527

2628
OpenTelemetrySdk(
2729
SdkTracerProvider tracerProvider,
2830
SdkMeterProvider meterProvider,
31+
SdkLogEmitterProvider logEmitterProvider,
2932
ContextPropagators propagators) {
3033
this.tracerProvider = new ObfuscatedTracerProvider(tracerProvider);
3134
this.meterProvider = new ObfuscatedMeterProvider(meterProvider);
35+
this.logEmitterProvider = logEmitterProvider;
3236
this.propagators = propagators;
3337
}
3438

@@ -60,6 +64,11 @@ public SdkMeterProvider getSdkMeterProvider() {
6064
return meterProvider.unobfuscate();
6165
}
6266

67+
/** Returns the {@link SdkLogEmitterProvider} for this {@link OpenTelemetrySdk}. */
68+
public SdkLogEmitterProvider getSdkLogEmitterProvider() {
69+
return logEmitterProvider;
70+
}
71+
6372
@Override
6473
public ContextPropagators getPropagators() {
6574
return propagators;

sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import io.opentelemetry.api.GlobalOpenTelemetry;
99
import io.opentelemetry.context.propagation.ContextPropagators;
10+
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
1011
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
1112
import io.opentelemetry.sdk.trace.SdkTracerProvider;
1213
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
@@ -18,6 +19,7 @@ public final class OpenTelemetrySdkBuilder {
1819
private ContextPropagators propagators = ContextPropagators.noop();
1920
@Nullable private SdkTracerProvider tracerProvider;
2021
@Nullable private SdkMeterProvider meterProvider;
22+
@Nullable private SdkLogEmitterProvider logEmitterProvider;
2123

2224
/**
2325
* Package protected to disallow direct initialization.
@@ -49,6 +51,18 @@ public OpenTelemetrySdkBuilder setMeterProvider(SdkMeterProvider meterProvider)
4951
return this;
5052
}
5153

54+
/**
55+
* Sets the {@link SdkLogEmitterProvider} to use. This can be used to configure log settings by
56+
* returning the instance created by a {@link
57+
* io.opentelemetry.sdk.logs.SdkLogEmitterProviderBuilder}.
58+
*
59+
* @see SdkLogEmitterProvider#builder()
60+
*/
61+
public OpenTelemetrySdkBuilder setLogEmitterProvider(SdkLogEmitterProvider logEmitterProvider) {
62+
this.logEmitterProvider = logEmitterProvider;
63+
return this;
64+
}
65+
5266
/** Sets the {@link ContextPropagators} to use. */
5367
public OpenTelemetrySdkBuilder setPropagators(ContextPropagators propagators) {
5468
this.propagators = propagators;
@@ -91,6 +105,11 @@ public OpenTelemetrySdk build() {
91105
meterProvider = SdkMeterProvider.builder().build();
92106
}
93107

94-
return new OpenTelemetrySdk(tracerProvider, meterProvider, propagators);
108+
SdkLogEmitterProvider logEmitterProvider = this.logEmitterProvider;
109+
if (logEmitterProvider == null) {
110+
logEmitterProvider = SdkLogEmitterProvider.builder().build();
111+
}
112+
113+
return new OpenTelemetrySdk(tracerProvider, meterProvider, logEmitterProvider, propagators);
95114
}
96115
}

sdk/all/src/test/java/io/opentelemetry/sdk/OpenTelemetrySdkTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.opentelemetry.context.propagation.ContextPropagators;
1818
import io.opentelemetry.context.propagation.TextMapPropagator;
1919
import io.opentelemetry.sdk.common.Clock;
20+
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
2021
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
2122
import io.opentelemetry.sdk.resources.Resource;
2223
import io.opentelemetry.sdk.trace.IdGenerator;
@@ -36,6 +37,7 @@ class OpenTelemetrySdkTest {
3637

3738
@Mock private SdkTracerProvider tracerProvider;
3839
@Mock private SdkMeterProvider meterProvider;
40+
@Mock private SdkLogEmitterProvider logEmitterProvider;
3941
@Mock private ContextPropagators propagators;
4042
@Mock private Clock clock;
4143

@@ -115,6 +117,7 @@ void building() {
115117
OpenTelemetrySdk.builder()
116118
.setTracerProvider(tracerProvider)
117119
.setMeterProvider(meterProvider)
120+
.setLogEmitterProvider(logEmitterProvider)
118121
.setPropagators(propagators)
119122
.build();
120123
assertThat(
@@ -126,7 +129,7 @@ void building() {
126129
((OpenTelemetrySdk.ObfuscatedMeterProvider) openTelemetry.getMeterProvider())
127130
.unobfuscate())
128131
.isEqualTo(meterProvider);
129-
assertThat(openTelemetry.getSdkMeterProvider()).isEqualTo(meterProvider);
132+
assertThat(openTelemetry.getSdkLogEmitterProvider()).isEqualTo(logEmitterProvider);
130133
assertThat(openTelemetry.getPropagators()).isEqualTo(propagators);
131134
}
132135

0 commit comments

Comments
 (0)