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}