
io.opentelemetry.javaagent.tooling.AgentTracerProviderConfigurer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of opentelemetry-javaagent-tooling Show documentation
Show all versions of opentelemetry-javaagent-tooling Show documentation
Instrumentation of Java libraries using OpenTelemetry.
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.tooling;
import static io.opentelemetry.javaagent.tooling.AgentInstaller.JAVAAGENT_ENABLED_CONFIG;
import static java.util.Collections.emptyList;
import com.google.auto.service.AutoService;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
import io.opentelemetry.javaagent.tooling.config.AgentConfig;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
@AutoService(AutoConfigurationCustomizerProvider.class)
public class AgentTracerProviderConfigurer implements AutoConfigurationCustomizerProvider {
private static final String ADD_THREAD_DETAILS = "otel.javaagent.add-thread-details";
@Override
public void customize(AutoConfigurationCustomizer autoConfigurationCustomizer) {
autoConfigurationCustomizer.addTracerProviderCustomizer(
AgentTracerProviderConfigurer::configure);
}
@CanIgnoreReturnValue
private static SdkTracerProviderBuilder configure(
SdkTracerProviderBuilder sdkTracerProviderBuilder, ConfigProperties config) {
if (!config.getBoolean(JAVAAGENT_ENABLED_CONFIG, true)) {
return sdkTracerProviderBuilder;
}
// Register additional thread details logging span processor
if (config.getBoolean(ADD_THREAD_DETAILS, true)) {
sdkTracerProviderBuilder.addSpanProcessor(new AddThreadDetailsSpanProcessor());
}
maybeEnableLoggingExporter(sdkTracerProviderBuilder, config);
return sdkTracerProviderBuilder;
}
private static void maybeEnableLoggingExporter(
SdkTracerProviderBuilder builder, ConfigProperties config) {
if (AgentConfig.isDebugModeEnabled(config)) {
// don't install another instance if the user has already explicitly requested it.
if (loggingExporterIsNotAlreadyConfigured(config)) {
builder.addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()));
}
}
}
private static boolean loggingExporterIsNotAlreadyConfigured(ConfigProperties config) {
return !config.getList("otel.traces.exporter", emptyList()).contains("logging");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy