diff --git a/limitador-server/src/main.rs b/limitador-server/src/main.rs index 53534a59..d17f0d9f 100644 --- a/limitador-server/src/main.rs +++ b/limitador-server/src/main.rs @@ -43,6 +43,7 @@ use std::path::Path; use std::sync::Arc; use std::time::Duration; use std::{env, process}; +use tracing_subscriber::Layer; #[cfg(feature = "distributed_storage")] use clap::parser::ValuesRef; @@ -215,16 +216,20 @@ async fn main() -> Result<(), Box> { let config = { let (config, version) = create_config(); println!("{LIMITADOR_HEADER} {version}"); + let level = config.log_level.unwrap_or_else(|| { tracing_subscriber::filter::EnvFilter::from_default_env() .max_level_hint() .unwrap_or(LevelFilter::ERROR) }); - let fmt_layer = if level >= LevelFilter::DEBUG { - tracing_subscriber::fmt::layer().with_span_events(FmtSpan::CLOSE) - } else { - tracing_subscriber::fmt::layer() - }; + + let fmt_layer = tracing_subscriber::fmt::layer() + .with_span_events(if level >= LevelFilter::DEBUG { + FmtSpan::CLOSE + } else { + FmtSpan::NONE + }) + .with_filter(level); let metrics_layer = MetricsLayer::new() .gather( @@ -240,6 +245,7 @@ async fn main() -> Result<(), Box> { if !config.tracing_endpoint.is_empty() { global::set_text_map_propagator(TraceContextPropagator::new()); + let tracer = opentelemetry_otlp::new_pipeline() .tracing() .with_exporter( @@ -251,16 +257,19 @@ async fn main() -> Result<(), Box> { KeyValue::new("service.name", "limitador"), ]))) .install_batch(opentelemetry_sdk::runtime::Tokio)?; + let telemetry_layer = tracing_opentelemetry::layer().with_tracer(tracer); + + // Init tracing subscriber with telemetry tracing_subscriber::registry() - .with(level) .with(metrics_layer) .with(fmt_layer) + .with(level.max(LevelFilter::INFO)) .with(telemetry_layer) .init(); } else { + // Init tracing subscriber without telemetry tracing_subscriber::registry() - .with(level) .with(metrics_layer) .with(fmt_layer) .init();