From 3c78710b296e4c0bff54ee97432ef09fe158f363 Mon Sep 17 00:00:00 2001 From: Adam Cattermole Date: Tue, 28 May 2024 11:59:11 +0100 Subject: [PATCH 1/2] Refactor levels for metrics, logging, and tracing --- limitador-server/src/main.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/limitador-server/src/main.rs b/limitador-server/src/main.rs index 53534a59..77240bb5 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; @@ -221,9 +222,11 @@ async fn main() -> Result<(), Box> { .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() + .with_span_events(FmtSpan::CLOSE) + .with_filter(level) + } else { + tracing_subscriber::fmt::layer().with_filter(level) }; let metrics_layer = MetricsLayer::new() @@ -251,16 +254,16 @@ async fn main() -> Result<(), Box> { KeyValue::new("service.name", "limitador"), ]))) .install_batch(opentelemetry_sdk::runtime::Tokio)?; + let tracing_level = level.max(LevelFilter::INFO); let telemetry_layer = tracing_opentelemetry::layer().with_tracer(tracer); tracing_subscriber::registry() - .with(level) .with(metrics_layer) .with(fmt_layer) + .with(tracing_level) .with(telemetry_layer) .init(); } else { tracing_subscriber::registry() - .with(level) .with(metrics_layer) .with(fmt_layer) .init(); From ab96ec5e3fa3feede7ce2a1f3920f5117e20f0ef Mon Sep 17 00:00:00 2001 From: Adam Cattermole Date: Fri, 31 May 2024 12:24:03 +0100 Subject: [PATCH 2/2] Minor refactor of tracing_subscriber configuration --- limitador-server/src/main.rs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/limitador-server/src/main.rs b/limitador-server/src/main.rs index 77240bb5..d17f0d9f 100644 --- a/limitador-server/src/main.rs +++ b/limitador-server/src/main.rs @@ -216,18 +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) - .with_filter(level) - } else { - tracing_subscriber::fmt::layer().with_filter(level) - }; + + 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( @@ -243,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( @@ -254,15 +257,18 @@ async fn main() -> Result<(), Box> { KeyValue::new("service.name", "limitador"), ]))) .install_batch(opentelemetry_sdk::runtime::Tokio)?; - let tracing_level = level.max(LevelFilter::INFO); + let telemetry_layer = tracing_opentelemetry::layer().with_tracer(tracer); + + // Init tracing subscriber with telemetry tracing_subscriber::registry() .with(metrics_layer) .with(fmt_layer) - .with(tracing_level) + .with(level.max(LevelFilter::INFO)) .with(telemetry_layer) .init(); } else { + // Init tracing subscriber without telemetry tracing_subscriber::registry() .with(metrics_layer) .with(fmt_layer)