52 lines
2.0 KiB
Java
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");
|
|
}
|
|
}
|