Skip to content

Commit 429afa1

Browse files
authored
Add toString to SDK trace components and print autoconfigured SDK (open-telemetry#4047)
* Add toString to SDK trace components and print autoconfigured SDK * Clean * Tweak logging message
1 parent 96b7895 commit 429afa1

18 files changed

Lines changed: 175 additions & 0 deletions

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
Comparing source compatibility of against
2+
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.trace.export.BatchSpanProcessor (not serializable)
3+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
4+
+++ NEW METHOD: PUBLIC(+) java.lang.String toString()
25
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.trace.export.BatchSpanProcessorBuilder (not serializable)
36
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
47
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.trace.export.BatchSpanProcessorBuilder setMeterProvider(io.opentelemetry.api.metrics.MeterProvider)
8+
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.trace.export.SimpleSpanProcessor (not serializable)
9+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
10+
+++ NEW METHOD: PUBLIC(+) java.lang.String toString()
11+
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.trace.SdkTracerProvider (not serializable)
12+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
13+
+++ NEW METHOD: PUBLIC(+) java.lang.String toString()

docs/apidiffs/current_vs_latest/opentelemetry-sdk.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Comparing source compatibility of against
44
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.api.metrics.MeterProvider getMeterProvider()
55
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.logs.SdkLogEmitterProvider getSdkLogEmitterProvider()
66
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.metrics.SdkMeterProvider getSdkMeterProvider()
7+
+++ NEW METHOD: PUBLIC(+) java.lang.String toString()
78
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.OpenTelemetrySdkBuilder (not serializable)
89
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
910
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.OpenTelemetrySdkBuilder setLogEmitterProvider(io.opentelemetry.sdk.logs.SdkLogEmitterProvider)

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkBuilder.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import java.util.ServiceLoader;
2929
import java.util.function.BiFunction;
3030
import java.util.function.Supplier;
31+
import java.util.logging.Level;
32+
import java.util.logging.Logger;
3133
import javax.annotation.Nullable;
3234

3335
/**
@@ -37,6 +39,9 @@
3739
*/
3840
public final class AutoConfiguredOpenTelemetrySdkBuilder implements AutoConfigurationCustomizer {
3941

42+
private static final Logger logger =
43+
Logger.getLogger(AutoConfiguredOpenTelemetrySdkBuilder.class.getName());
44+
4045
@Nullable private ConfigProperties config;
4146

4247
private BiFunction<? super TextMapPropagator, ConfigProperties, ? extends TextMapPropagator>
@@ -213,6 +218,8 @@ public AutoConfiguredOpenTelemetrySdk build() {
213218

214219
if (setResultAsGlobal) {
215220
GlobalOpenTelemetry.set(openTelemetrySdk);
221+
logger.log(
222+
Level.FINE, "Global OpenTelemetrySdk set to {0} by autoconfiguration", openTelemetrySdk);
216223
}
217224

218225
return AutoConfiguredOpenTelemetrySdk.create(openTelemetrySdk, resource, config);

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ public ContextPropagators getPropagators() {
7474
return propagators;
7575
}
7676

77+
@Override
78+
public String toString() {
79+
// TODO(anuraaga): Add metrics / logs / propagators
80+
return "OpenTelemetrySdk{" + "tracerProvider=" + tracerProvider.unobfuscate() + '}';
81+
}
82+
7783
/**
7884
* This class allows the SDK to unobfuscate an obfuscated static global provider.
7985
*

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

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import static org.assertj.core.api.Assertions.assertThatThrownBy;
1010
import static org.assertj.core.api.InstanceOfAssertFactories.type;
1111
import static org.mockito.Mockito.mock;
12+
import static org.mockito.Mockito.when;
1213

1314
import io.opentelemetry.api.GlobalOpenTelemetry;
1415
import io.opentelemetry.api.OpenTelemetry;
@@ -278,4 +279,29 @@ void minimalOpenTelemetrySdkConfigurationDemo() {
278279
.setPropagators(ContextPropagators.create(mock(TextMapPropagator.class)))
279280
.build();
280281
}
282+
283+
@Test
284+
void stringRepresentation() {
285+
SpanExporter exporter = mock(SpanExporter.class);
286+
when(exporter.toString()).thenReturn("MockSpanExporter{}");
287+
OpenTelemetrySdk sdk =
288+
OpenTelemetrySdk.builder()
289+
.setTracerProvider(
290+
SdkTracerProvider.builder()
291+
.addSpanProcessor(
292+
SimpleSpanProcessor.create(SpanExporter.composite(exporter, exporter)))
293+
.build())
294+
.build();
295+
296+
assertThat(sdk.toString())
297+
.isEqualTo(
298+
"OpenTelemetrySdk{"
299+
+ "tracerProvider=SdkTracerProvider{"
300+
+ "clock=SystemClock{}, "
301+
+ "idGenerator=RandomIdGenerator{}, "
302+
+ "resource=Resource{schemaUrl=null, attributes={service.name=\"unknown_service:java\", telemetry.sdk.language=\"java\", telemetry.sdk.name=\"opentelemetry\", telemetry.sdk.version=\"1.10.0-SNAPSHOT\"}}, "
303+
+ "spanLimitsSupplier=SpanLimitsValue{maxNumberOfAttributes=128, maxNumberOfEvents=128, maxNumberOfLinks=128, maxNumberOfAttributesPerEvent=128, maxNumberOfAttributesPerLink=128, maxAttributeValueLength=2147483647}, "
304+
+ "sampler=ParentBased{root:AlwaysOnSampler,remoteParentSampled:AlwaysOnSampler,remoteParentNotSampled:AlwaysOffSampler,localParentSampled:AlwaysOnSampler,localParentNotSampled:AlwaysOffSampler}, "
305+
+ "spanProcessor=SimpleSpanProcessor{spanExporter=MultiSpanExporter{spanExporters=[MockSpanExporter{}, MockSpanExporter{}]}}}}");
306+
}
281307
}

sdk/common/src/main/java/io/opentelemetry/sdk/common/SystemClock.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,9 @@ public long now() {
3434
public long nanoTime() {
3535
return System.nanoTime();
3636
}
37+
38+
@Override
39+
public String toString() {
40+
return "SystemClock{}";
41+
}
3742
}

sdk/trace/src/main/java/io/opentelemetry/sdk/trace/MultiSpanProcessor.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,16 @@ private MultiSpanProcessor(List<SpanProcessor> spanProcessors) {
9292
}
9393
}
9494
}
95+
96+
@Override
97+
public String toString() {
98+
return "MultiSpanProcessor{"
99+
+ "spanProcessorsStart="
100+
+ spanProcessorsStart
101+
+ ", spanProcessorsEnd="
102+
+ spanProcessorsEnd
103+
+ ", spanProcessorsAll="
104+
+ spanProcessorsAll
105+
+ '}';
106+
}
95107
}

sdk/trace/src/main/java/io/opentelemetry/sdk/trace/NoopSpanProcessor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,9 @@ public boolean isEndRequired() {
3131
}
3232

3333
private NoopSpanProcessor() {}
34+
35+
@Override
36+
public String toString() {
37+
return "NoopSpanProcessor{}";
38+
}
3439
}

sdk/trace/src/main/java/io/opentelemetry/sdk/trace/RandomIdGenerator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,9 @@ public String generateTraceId() {
3737
} while (idLo == INVALID_ID);
3838
return TraceId.fromLongs(idHi, idLo);
3939
}
40+
41+
@Override
42+
public String toString() {
43+
return "RandomIdGenerator{}";
44+
}
4045
}

sdk/trace/src/main/java/io/opentelemetry/sdk/trace/SdkTracerProvider.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,4 +133,22 @@ public CompletableResultCode forceFlush() {
133133
public void close() {
134134
shutdown().join(10, TimeUnit.SECONDS);
135135
}
136+
137+
@Override
138+
public String toString() {
139+
return "SdkTracerProvider{"
140+
+ "clock="
141+
+ sharedState.getClock()
142+
+ ", idGenerator="
143+
+ sharedState.getIdGenerator()
144+
+ ", resource="
145+
+ sharedState.getResource()
146+
+ ", spanLimitsSupplier="
147+
+ sharedState.getSpanLimits()
148+
+ ", sampler="
149+
+ sharedState.getSampler()
150+
+ ", spanProcessor="
151+
+ sharedState.getActiveSpanProcessor()
152+
+ '}';
153+
}
136154
}

0 commit comments

Comments
 (0)