traverse_logging/
lib.rs

1use tracing_subscriber::{fmt, prelude::*, EnvFilter};
2
3/// Initialize the tracing subscriber with configurable verbosity
4///
5/// # Arguments
6/// * `verbose` - If true, sets default log level to debug; otherwise info
7///
8/// This function respects the RUST_LOG environment variable if set,
9/// otherwise uses the default based on the verbose flag.
10pub fn init_subscriber(verbose: bool) {
11    // Check if RUST_LOG is already set
12    let env_filter = if std::env::var("RUST_LOG").is_ok() {
13        // Use the environment variable if it's set
14        EnvFilter::from_default_env()
15    } else {
16        // Set default based on verbose flag
17        let default_level = if verbose { "debug" } else { "info" };
18        EnvFilter::new(default_level)
19    };
20
21    // Initialize the subscriber
22    tracing_subscriber::registry()
23        .with(fmt::layer())
24        .with(env_filter)
25        .init();
26}
27
28/// Initialize the tracing subscriber with a custom filter
29///
30/// # Arguments
31/// * `filter` - A custom filter string (e.g., "info", "debug", "trace")
32pub fn init_subscriber_with_filter(filter: &str) {
33    let env_filter = EnvFilter::new(filter);
34    
35    tracing_subscriber::registry()
36        .with(fmt::layer())
37        .with(env_filter)
38        .init();
39}