Skip to main content

listen_tracing/
lib.rs

1use tracing_subscriber::{filter::EnvFilter, layer::SubscriberExt, util::SubscriberInitExt};
2
3pub fn setup_tracing() {
4    // Create an EnvFilter that reads from RUST_LOG with INFO as default
5    let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
6
7    // Configure logging based on environment
8    if std::env::var("IS_SYSTEMD_SERVICE").is_ok() {
9        // Use systemd formatting when running as a service
10        let journald_layer = tracing_journald::layer().expect("Failed to create journald layer");
11        tracing_subscriber::registry()
12            .with(journald_layer)
13            .with(env_filter)
14            .init();
15    } else {
16        // Use standard formatting for non-systemd environments
17        tracing_subscriber::fmt()
18            .with_ansi(true)
19            .with_target(true)
20            .with_env_filter(env_filter)
21            .init();
22    }
23}