opentelemetry-java-instrume.../javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/AgentTracerProviderConfigur...

52 lines
2.0 KiB
Java

/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.tooling;
import com.google.auto.service.AutoService;
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
import io.opentelemetry.instrumentation.api.config.Config;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.traces.SdkTracerProviderConfigurer;
import io.opentelemetry.sdk.trace.SdkTracerProviderBuilder;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@AutoService(SdkTracerProviderConfigurer.class)
public class AgentTracerProviderConfigurer implements SdkTracerProviderConfigurer {
private static final Logger logger = LoggerFactory.getLogger(AgentTracerProviderConfigurer.class);
private static final String ADD_THREAD_DETAILS = "otel.javaagent.add-thread-details";
@Override
public void configure(
SdkTracerProviderBuilder sdkTracerProviderBuilder, ConfigProperties config) {
if (!Config.get().getBoolean(OpenTelemetryInstaller.JAVAAGENT_ENABLED_CONFIG, true)) {
return;
}
// Register additional thread details logging span processor
if (Config.get().getBoolean(ADD_THREAD_DETAILS, true)) {
sdkTracerProviderBuilder.addSpanProcessor(new AddThreadDetailsSpanProcessor());
}
maybeEnableLoggingExporter(sdkTracerProviderBuilder);
}
private static void maybeEnableLoggingExporter(SdkTracerProviderBuilder builder) {
if (Config.get().isAgentDebugEnabled()) {
// don't install another instance if the user has already explicitly requested it.
if (loggingExporterIsNotAlreadyConfigured()) {
builder.addSpanProcessor(SimpleSpanProcessor.create(new LoggingSpanExporter()));
}
}
}
private static boolean loggingExporterIsNotAlreadyConfigured() {
return !Config.get().getString("otel.traces.exporter", "").equalsIgnoreCase("logging");
}
}