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}