Skip to content

Commit baa2292

Browse files
committed
configure logging span exporter
1 parent 27acb27 commit baa2292

File tree

4 files changed

+67
-17
lines changed

4 files changed

+67
-17
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.logging;
7+
8+
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
9+
import io.opentelemetry.instrumentation.logging.LoggingSpanExporterConfigurer;
10+
import io.opentelemetry.instrumentation.spring.autoconfigure.internal.SdkEnabled;
11+
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
12+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
13+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
14+
import org.springframework.context.annotation.Bean;
15+
import org.springframework.context.annotation.Conditional;
16+
import org.springframework.context.annotation.Configuration;
17+
18+
/**
19+
* This class is internal and is hence not for public use. Its APIs are unstable and can change at
20+
* any time.
21+
*/
22+
@Conditional(SdkEnabled.class)
23+
// for backward compatibility with declarative configuration
24+
@ConditionalOnProperty(name = "otel.log_level", havingValue = "debug")
25+
@ConditionalOnClass(LoggingSpanExporter.class)
26+
@Configuration
27+
public class LoggingExporterAutoConfiguration {
28+
29+
@Bean
30+
public AutoConfigurationCustomizerProvider loggingOtelCustomizer() {
31+
return p ->
32+
p.addTracerProviderCustomizer(
33+
(builder, config) -> {
34+
LoggingSpanExporterConfigurer.enableLoggingExporter(builder, config);
35+
return builder;
36+
});
37+
}
38+
}

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentTracerProviderConfigurer.java

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,17 @@
55

66
package io.opentelemetry.javaagent.tooling;
77

8+
import static io.opentelemetry.instrumentation.logging.LoggingSpanExporterConfigurer.enableLoggingExporter;
89
import static io.opentelemetry.javaagent.tooling.AgentInstaller.JAVAAGENT_ENABLED_CONFIG;
9-
import static java.util.Collections.emptyList;
1010

1111
import com.google.auto.service.AutoService;
1212
import com.google.errorprone.annotations.CanIgnoreReturnValue;
13-
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
1413
import io.opentelemetry.instrumentation.thread.AddThreadDetailsSpanProcessor;
1514
import io.opentelemetry.javaagent.tooling.config.AgentConfig;
1615
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
1716
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
1817
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1918
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
20-
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
2119

2220
@AutoService(AutoConfigurationCustomizerProvider.class)
2321
public class AgentTracerProviderConfigurer implements AutoConfigurationCustomizerProvider {
@@ -41,22 +39,10 @@ private static SdkTracerProviderBuilder configure(
4139
sdkTracerProviderBuilder.addSpanProcessor(new AddThreadDetailsSpanProcessor());
4240
}
4341

44-
maybeEnableLoggingExporter(sdkTracerProviderBuilder, config);
45-
46-
return sdkTracerProviderBuilder;
47-
}
48-
49-
private static void maybeEnableLoggingExporter(
50-
SdkTracerProviderBuilder builder, ConfigProperties config) {
5142
if (AgentConfig.isDebugModeEnabled(config)) {
52-
// don't install another instance if the user has already explicitly requested it.
53-
if (loggingExporterIsNotAlreadyConfigured(config)) {
54-
builder.addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()));
55-
}
43+
enableLoggingExporter(sdkTracerProviderBuilder, config);
5644
}
57-
}
5845

59-
private static boolean loggingExporterIsNotAlreadyConfigured(ConfigProperties config) {
60-
return !config.getList("otel.traces.exporter", emptyList()).contains("logging");
46+
return sdkTracerProviderBuilder;
6147
}
6248
}

sdk-autoconfigure-support/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ plugins {
66
group = "io.opentelemetry.instrumentation"
77

88
dependencies {
9+
compileOnly("io.opentelemetry:opentelemetry-exporter-logging")
910
api("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure")
1011

1112
compileOnly("com.google.code.findbugs:annotations")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.opentelemetry.instrumentation.logging;
2+
3+
import static java.util.Collections.emptyList;
4+
5+
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
6+
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
7+
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
8+
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
9+
10+
public class LoggingSpanExporterConfigurer {
11+
12+
private LoggingSpanExporterConfigurer() {}
13+
14+
public static void enableLoggingExporter(
15+
SdkTracerProviderBuilder builder, ConfigProperties config) {
16+
// don't install another instance if the user has already explicitly requested it.
17+
if (loggingExporterIsNotAlreadyConfigured(config)) {
18+
builder.addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()));
19+
}
20+
}
21+
22+
private static boolean loggingExporterIsNotAlreadyConfigured(ConfigProperties config) {
23+
return !config.getList("otel.traces.exporter", emptyList()).contains("logging");
24+
}
25+
}

0 commit comments

Comments
 (0)