Skip to main content

http_handle/
observability.rs

1// SPDX-License-Identifier: AGPL-3.0-only
2// Copyright (c) 2026 Sebastien Rousseau
3
4//! Observability initialization helpers.
5
6#[cfg(feature = "observability")]
7use tracing_subscriber::EnvFilter;
8
9/// Initializes default tracing subscriber once.
10///
11/// This is a no-op when the `observability` feature is disabled.
12///
13/// # Examples
14///
15/// ```rust
16/// use http_handle::observability::init_tracing;
17/// init_tracing();
18/// assert_eq!(1 + 1, 2);
19/// ```
20///
21/// # Panics
22///
23/// This function does not panic.
24pub fn init_tracing() {
25    #[cfg(feature = "observability")]
26    {
27        let _ = tracing_subscriber::fmt()
28            .with_env_filter(
29                EnvFilter::try_from_default_env()
30                    .unwrap_or_else(|_| EnvFilter::new("info")),
31            )
32            .try_init();
33    }
34}
35
36#[cfg(test)]
37mod tests {
38    use super::*;
39
40    #[test]
41    fn init_tracing_is_safe_to_call() {
42        init_tracing();
43        init_tracing();
44    }
45}