Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change LogEmitter to Logger, LogEmitterProvider to LoggerProvider #4721

Merged
merged 3 commits into from Sep 16, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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)
jack-berg marked this conversation as resolved.
Show resolved Hide resolved
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