Hide opentelemetry behind feature flag

This commit is contained in:
Lennart
2025-01-26 13:48:43 +01:00
parent 569e7d2774
commit eaabe24683
3 changed files with 57 additions and 21 deletions

View File

@@ -1,21 +1,28 @@
use crate::config::TracingConfig;
use opentelemetry::global;
use opentelemetry::trace::TracerProvider;
use opentelemetry::KeyValue;
#[cfg(feature = "opentelemetry")]
use opentelemetry::{global, trace::TracerProvider, KeyValue};
#[cfg(feature = "opentelemetry")]
use opentelemetry_otlp::WithExportConfig;
use opentelemetry_sdk::propagation::TraceContextPropagator;
use opentelemetry_sdk::trace::Tracer;
use opentelemetry_sdk::Resource;
use opentelemetry_semantic_conventions::resource::{SERVICE_NAME, SERVICE_VERSION};
use opentelemetry_semantic_conventions::SCHEMA_URL;
#[cfg(feature = "opentelemetry")]
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::Tracer, Resource};
#[cfg(feature = "opentelemetry")]
use opentelemetry_semantic_conventions::{
resource::{SERVICE_NAME, SERVICE_VERSION},
SCHEMA_URL,
};
#[cfg(feature = "opentelemetry")]
use std::time::Duration;
use tracing::level_filters::LevelFilter;
#[cfg(not(feature = "opentelemetry"))]
use tracing::warn;
#[cfg(feature = "opentelemetry")]
use tracing_opentelemetry::OpenTelemetryLayer;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::EnvFilter;
pub fn init_tracer() -> Tracer {
#[cfg(feature = "opentelemetry")]
pub fn init_otel() -> Tracer {
let otel_exporter = opentelemetry_otlp::SpanExporter::builder()
.with_tonic()
.with_timeout(Duration::from_secs(1))
@@ -51,8 +58,16 @@ pub fn setup_tracing(config: &TracingConfig) {
.with(fmt_layer);
if config.opentelemetry {
global::set_text_map_propagator(TraceContextPropagator::new());
registry.with(OpenTelemetryLayer::new(init_tracer())).init();
#[cfg(feature = "opentelemetry")]
{
global::set_text_map_propagator(TraceContextPropagator::new());
registry.with(OpenTelemetryLayer::new(init_otel())).init();
}
#[cfg(not(feature = "opentelemetry"))]
{
registry.init();
warn!("This version of RustiCal is compiled without the opentelemetry feature. tracing.opentelemtry = true has no effect");
}
} else {
registry.init();
}