llm_edge_proxy/server/
tracing.rs

1//! OpenTelemetry tracing configuration
2
3use anyhow::Result;
4use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
5
6/// Initialize tracing with OpenTelemetry support
7pub fn init_tracing() -> Result<()> {
8    let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
9
10    // Configure the tracing subscriber with JSON formatting
11    let formatting_layer = tracing_subscriber::fmt::layer()
12        .json()
13        .with_target(true)
14        .with_thread_ids(true)
15        .with_line_number(true);
16
17    tracing_subscriber::registry()
18        .with(env_filter)
19        .with(formatting_layer)
20        .init();
21
22    tracing::info!("Tracing initialized successfully");
23    Ok(())
24}
25
26/// Create a span for request tracing
27#[macro_export]
28macro_rules! trace_request {
29    ($name:expr, $($field:tt)*) => {
30        tracing::info_span!($name, $($field)*)
31    };
32}