Skip to content

Commit

Permalink
Change LogEmitter to Logger, LogEmitterProvider to LoggerProvider (#4721
Browse files Browse the repository at this point in the history
)
  • Loading branch information
jack-berg committed Sep 16, 2022
1 parent a50ceb3 commit 6209109
Show file tree
Hide file tree
Showing 39 changed files with 388 additions and 390 deletions.
16 changes: 16 additions & 0 deletions buildSrc/src/main/kotlin/otel.japicmp-conventions.gradle.kts
Expand Up @@ -38,6 +38,9 @@ class AllowDefaultMethodRule : AbstractRecordingSeenMembers() {
if (isAbstractMethodOnAutoValue(member, change)) {
continue
}
if (isLogEmitterProvider(member)) {
continue
}
if (!change.isSourceCompatible) {
return Violation.error(member, "Not source compatible")
}
Expand All @@ -59,6 +62,19 @@ class AllowDefaultMethodRule : AbstractRecordingSeenMembers() {
member is JApiMethod &&
member.getjApiClass().newClass.get().getAnnotation(AutoValue::class.java) != null
}

/**
* Check if the change is related to LogEmitterProvider name change to LoggerProvider.
*/
// TODO(jack-berg): remove after 1.19.0.
fun isLogEmitterProvider(member: JApiCompatibility): Boolean {
try {
return member is JApiMethod &&
member.oldMethod.get().methodInfo.name.matches("(getSdk|set|add)LogEmitterProvider(.*)".toRegex())
} catch (e: IllegalStateException) {
return false
}
}
}

/**
Expand Down
@@ -1,2 +1,5 @@
Comparing source compatibility of against
No changes.
***! MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer addLogEmitterProviderCustomizer(java.util.function.BiFunction)
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer addLoggerProviderCustomizer(java.util.function.BiFunction)
9 changes: 8 additions & 1 deletion docs/apidiffs/current_vs_latest/opentelemetry-sdk.txt
@@ -1,2 +1,9 @@
Comparing source compatibility of against
No changes.
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.OpenTelemetrySdk (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.sdk.logs.SdkLogEmitterProvider getSdkLogEmitterProvider()
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.logs.SdkLoggerProvider getSdkLoggerProvider()
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.OpenTelemetrySdkBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.sdk.OpenTelemetrySdkBuilder setLogEmitterProvider(io.opentelemetry.sdk.logs.SdkLogEmitterProvider)
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.OpenTelemetrySdkBuilder setLoggerProvider(io.opentelemetry.sdk.logs.SdkLoggerProvider)
Expand Up @@ -53,8 +53,8 @@
import io.opentelemetry.proto.trace.v1.ResourceSpans;
import io.opentelemetry.proto.trace.v1.ScopeSpans;
import io.opentelemetry.proto.trace.v1.Span.Link;
import io.opentelemetry.sdk.logs.LogEmitter;
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
import io.opentelemetry.sdk.logs.Logger;
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
import io.opentelemetry.sdk.logs.data.Severity;
import io.opentelemetry.sdk.logs.export.LogExporter;
import io.opentelemetry.sdk.logs.export.SimpleLogProcessor;
Expand Down Expand Up @@ -502,13 +502,13 @@ void testOtlpHttpLogExport_mtls() throws Exception {
}

private static void testLogExporter(LogExporter logExporter) {
SdkLogEmitterProvider logEmitterProvider =
SdkLogEmitterProvider.builder()
SdkLoggerProvider loggerProvider =
SdkLoggerProvider.builder()
.setResource(RESOURCE)
.addLogProcessor(SimpleLogProcessor.create(logExporter))
.build();

LogEmitter logEmitter = logEmitterProvider.get(OtlpExporterIntegrationTest.class.getName());
Logger logger = loggerProvider.get(OtlpExporterIntegrationTest.class.getName());

SpanContext spanContext =
SpanContext.create(
Expand All @@ -518,7 +518,7 @@ private static void testLogExporter(LogExporter logExporter) {
TraceState.getDefault());

try (Scope unused = Span.wrap(spanContext).makeCurrent()) {
logEmitter
logger
.logRecordBuilder()
.setBody("log body")
.setAllAttributes(Attributes.builder().put("key", "value").build())
Expand All @@ -530,7 +530,7 @@ private static void testLogExporter(LogExporter logExporter) {
}

// Closing triggers flush of processor
logEmitterProvider.close();
loggerProvider.close();

await()
.atMost(Duration.ofSeconds(30))
Expand Down
2 changes: 1 addition & 1 deletion sdk-extensions/autoconfigure-spi/build.gradle.kts
Expand Up @@ -13,6 +13,6 @@ dependencies {
// SdkMeterProviderBuilder.
implementation(project(":sdk:metrics"))
// implementation dependency to require users to add the artifact directly to their build to use
// SdkLogEmitterProviderBuilder.
// SdkLoggerProviderBuilder.
implementation(project(":sdk:logs"))
}
Expand Up @@ -6,7 +6,7 @@
package io.opentelemetry.sdk.autoconfigure.spi;

import io.opentelemetry.context.propagation.TextMapPropagator;
import io.opentelemetry.sdk.logs.SdkLogEmitterProviderBuilder;
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
import io.opentelemetry.sdk.logs.export.LogExporter;
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
Expand Down Expand Up @@ -137,13 +137,13 @@ default AutoConfigurationCustomizer addMetricExporterCustomizer(
}

/**
* Adds a {@link BiFunction} to invoke the with the {@link SdkLogEmitterProviderBuilder} to allow
* Adds a {@link BiFunction} to invoke the with the {@link SdkLoggerProviderBuilder} to allow
* customization. The return value of the {@link BiFunction} will replace the passed-in argument.
*
* <p>Multiple calls will execute the customizers in order.
*/
default AutoConfigurationCustomizer addLogEmitterProviderCustomizer(
BiFunction<SdkLogEmitterProviderBuilder, ConfigProperties, SdkLogEmitterProviderBuilder>
default AutoConfigurationCustomizer addLoggerProviderCustomizer(
BiFunction<SdkLoggerProviderBuilder, ConfigProperties, SdkLoggerProviderBuilder>
meterProviderCustomizer) {
return this;
}
Expand Down
Expand Up @@ -16,8 +16,8 @@
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
import io.opentelemetry.sdk.logs.SdkLogEmitterProviderBuilder;
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
import io.opentelemetry.sdk.logs.export.LogExporter;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
Expand Down Expand Up @@ -68,8 +68,8 @@ public final class AutoConfiguredOpenTelemetrySdkBuilder implements AutoConfigur
private BiFunction<? super MetricExporter, ConfigProperties, ? extends MetricExporter>
metricExporterCustomizer = (a, unused) -> a;

private BiFunction<SdkLogEmitterProviderBuilder, ConfigProperties, SdkLogEmitterProviderBuilder>
logEmitterProviderCustomizer = (a, unused) -> a;
private BiFunction<SdkLoggerProviderBuilder, ConfigProperties, SdkLoggerProviderBuilder>
loggerProviderCustomizer = (a, unused) -> a;
private BiFunction<? super LogExporter, ConfigProperties, ? extends LogExporter>
logExporterCustomizer = (a, unused) -> a;

Expand Down Expand Up @@ -246,18 +246,18 @@ public AutoConfiguredOpenTelemetrySdkBuilder addMetricExporterCustomizer(
}

/**
* Adds a {@link BiFunction} to invoke the with the {@link SdkLogEmitterProviderBuilder} to allow
* Adds a {@link BiFunction} to invoke the with the {@link SdkLoggerProviderBuilder} to allow
* customization. The return value of the {@link BiFunction} will replace the passed-in argument.
*
* <p>Multiple calls will execute the customizers in order.
*/
@Override
public AutoConfiguredOpenTelemetrySdkBuilder addLogEmitterProviderCustomizer(
BiFunction<SdkLogEmitterProviderBuilder, ConfigProperties, SdkLogEmitterProviderBuilder>
logEmitterProviderCustomizer) {
requireNonNull(logEmitterProviderCustomizer, "logEmitterProviderCustomizer");
this.logEmitterProviderCustomizer =
mergeCustomizer(this.logEmitterProviderCustomizer, logEmitterProviderCustomizer);
public AutoConfiguredOpenTelemetrySdkBuilder addLoggerProviderCustomizer(
BiFunction<SdkLoggerProviderBuilder, ConfigProperties, SdkLoggerProviderBuilder>
loggerProviderCustomizer) {
requireNonNull(loggerProviderCustomizer, "loggerProviderCustomizer");
this.loggerProviderCustomizer =
mergeCustomizer(this.loggerProviderCustomizer, loggerProviderCustomizer);
return this;
}

Expand Down Expand Up @@ -352,17 +352,12 @@ public AutoConfiguredOpenTelemetrySdk build() {
tracerProviderBuilder = tracerProviderCustomizer.apply(tracerProviderBuilder, config);
SdkTracerProvider tracerProvider = tracerProviderBuilder.build();

SdkLogEmitterProviderBuilder logEmitterProviderBuilder = SdkLogEmitterProvider.builder();
logEmitterProviderBuilder.setResource(resource);
LogEmitterProviderConfiguration.configureLogEmitterProvider(
logEmitterProviderBuilder,
config,
serviceClassLoader,
meterProvider,
logExporterCustomizer);
logEmitterProviderBuilder =
logEmitterProviderCustomizer.apply(logEmitterProviderBuilder, config);
SdkLogEmitterProvider logEmitterProvider = logEmitterProviderBuilder.build();
SdkLoggerProviderBuilder loggerProviderBuilder = SdkLoggerProvider.builder();
loggerProviderBuilder.setResource(resource);
LoggerProviderConfiguration.configureLoggerProvider(
loggerProviderBuilder, config, serviceClassLoader, meterProvider, logExporterCustomizer);
loggerProviderBuilder = loggerProviderCustomizer.apply(loggerProviderBuilder, config);
SdkLoggerProvider loggerProvider = loggerProviderBuilder.build();

if (registerShutdownHook) {
Runtime.getRuntime()
Expand All @@ -372,7 +367,7 @@ public AutoConfiguredOpenTelemetrySdk build() {
List<CompletableResultCode> shutdown = new ArrayList<>();
shutdown.add(tracerProvider.shutdown());
shutdown.add(meterProvider.shutdown());
shutdown.add(logEmitterProvider.shutdown());
shutdown.add(loggerProvider.shutdown());
CompletableResultCode.ofAll(shutdown).join(10, TimeUnit.SECONDS);
}));
}
Expand All @@ -384,7 +379,7 @@ public AutoConfiguredOpenTelemetrySdk build() {
OpenTelemetrySdkBuilder sdkBuilder =
OpenTelemetrySdk.builder()
.setTracerProvider(tracerProvider)
.setLogEmitterProvider(logEmitterProvider)
.setLoggerProvider(loggerProvider)
.setMeterProvider(meterProvider)
.setPropagators(propagators);

Expand Down
Expand Up @@ -12,7 +12,7 @@
import io.opentelemetry.sdk.logs.LogLimits;
import io.opentelemetry.sdk.logs.LogLimitsBuilder;
import io.opentelemetry.sdk.logs.LogProcessor;
import io.opentelemetry.sdk.logs.SdkLogEmitterProviderBuilder;
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
import io.opentelemetry.sdk.logs.export.BatchLogProcessor;
import io.opentelemetry.sdk.logs.export.LogExporter;
import io.opentelemetry.sdk.logs.export.SimpleLogProcessor;
Expand All @@ -22,23 +22,23 @@
import java.util.Map;
import java.util.function.BiFunction;

final class LogEmitterProviderConfiguration {
final class LoggerProviderConfiguration {

static void configureLogEmitterProvider(
SdkLogEmitterProviderBuilder logEmitterProviderBuilder,
static void configureLoggerProvider(
SdkLoggerProviderBuilder loggerProviderBuilder,
ConfigProperties config,
ClassLoader serviceClassLoader,
MeterProvider meterProvider,
BiFunction<? super LogExporter, ConfigProperties, ? extends LogExporter>
logExporterCustomizer) {

logEmitterProviderBuilder.setLogLimits(() -> configureLogLimits(config));
loggerProviderBuilder.setLogLimits(() -> configureLogLimits(config));

Map<String, LogExporter> exportersByName =
configureLogExporters(config, serviceClassLoader, meterProvider, logExporterCustomizer);

configureLogProcessors(exportersByName, meterProvider)
.forEach(logEmitterProviderBuilder::addLogProcessor);
.forEach(loggerProviderBuilder::addLogProcessor);
}

// Visible for testing
Expand Down Expand Up @@ -78,5 +78,5 @@ static LogLimits configureLogLimits(ConfigProperties config) {
return builder.build();
}

private LogEmitterProviderConfiguration() {}
private LoggerProviderConfiguration() {}
}
Expand Up @@ -28,8 +28,8 @@
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.logs.LogProcessor;
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
import io.opentelemetry.sdk.logs.SdkLogEmitterProviderBuilder;
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
import io.opentelemetry.sdk.metrics.export.MetricReader;
Expand Down Expand Up @@ -264,19 +264,19 @@ void builder_addMeterProviderCustomizer() {
// TODO: add test for addMetricExporterCustomizer once OTLP export is enabled by default

@Test
void builder_addLogEmitterProviderCustomizer() {
void builder_addLoggerProviderCustomizer() {
Mockito.lenient().when(logProcessor.shutdown()).thenReturn(CompletableResultCode.ofSuccess());
when(logProcessor.forceFlush()).thenReturn(CompletableResultCode.ofSuccess());

SdkLogEmitterProvider sdkLogEmitterProvider =
SdkLoggerProvider sdkLoggerProvider =
builder
.addLogEmitterProviderCustomizer(
(logEmitterProviderBuilder, configProperties) ->
logEmitterProviderBuilder.addLogProcessor(logProcessor))
.addLoggerProviderCustomizer(
(loggerProviderBuilder, configProperties) ->
loggerProviderBuilder.addLogProcessor(logProcessor))
.build()
.getOpenTelemetrySdk()
.getSdkLogEmitterProvider();
sdkLogEmitterProvider.forceFlush().join(10, TimeUnit.SECONDS);
.getSdkLoggerProvider();
sdkLoggerProvider.forceFlush().join(10, TimeUnit.SECONDS);

verify(logProcessor).forceFlush();
}
Expand Down Expand Up @@ -331,26 +331,22 @@ public SdkMeterProviderBuilder apply(
return builder;
}
});
BiFunction<SdkLogEmitterProviderBuilder, ConfigProperties, SdkLogEmitterProviderBuilder>
logCustomizer =
spy(
new BiFunction<
SdkLogEmitterProviderBuilder,
ConfigProperties,
SdkLogEmitterProviderBuilder>() {
@Override
public SdkLogEmitterProviderBuilder apply(
SdkLogEmitterProviderBuilder builder, ConfigProperties config) {
return builder;
}
});
BiFunction<SdkLoggerProviderBuilder, ConfigProperties, SdkLoggerProviderBuilder> logCustomizer =
spy(
new BiFunction<SdkLoggerProviderBuilder, ConfigProperties, SdkLoggerProviderBuilder>() {
@Override
public SdkLoggerProviderBuilder apply(
SdkLoggerProviderBuilder builder, ConfigProperties config) {
return builder;
}
});

AutoConfiguredOpenTelemetrySdk autoConfiguredSdk =
AutoConfiguredOpenTelemetrySdk.builder()
.addPropertiesSupplier(() -> singletonMap("otel.experimental.sdk.enabled", "false"))
.addTracerProviderCustomizer(traceCustomizer)
.addMeterProviderCustomizer(metricCustomizer)
.addLogEmitterProviderCustomizer(logCustomizer)
.addLoggerProviderCustomizer(logCustomizer)
.build();

assertThat(autoConfiguredSdk.getOpenTelemetrySdk()).isInstanceOf(OpenTelemetrySdk.class);
Expand Down

0 comments on commit 6209109

Please sign in to comment.