diff options
Diffstat (limited to 'tedge/src/logging.rs')
-rw-r--r-- | tedge/src/logging.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/tedge/src/logging.rs b/tedge/src/logging.rs index a2d60e76..ff4de8f0 100644 --- a/tedge/src/logging.rs +++ b/tedge/src/logging.rs @@ -1,3 +1,4 @@ +use std::ops::Not; use std::path::PathBuf; use tracing_subscriber::filter::EnvFilter; @@ -11,6 +12,7 @@ pub fn setup_logging( spec: Option<LoggingSpec>, chrome_logging: Option<&PathBuf>, tracy_logging: bool, + tree_logging: bool, ) -> miette::Result<LogGuard> { let env_filter = match spec { None => { @@ -60,13 +62,19 @@ pub fn setup_logging( .unwrap_or_default(); let opt_tracy_layer = tracy_logging.then(tracing_tracy::TracyLayer::new); - - let stdout_log = env_filter.map(|f| tracing_subscriber::fmt::layer().with_filter(f)); + let opt_tree_layer = { + let indent_size = 4; + tree_logging.then(|| tracing_tree::HierarchicalLayer::new(indent_size)) + }; + let opt_stdout_log = tree_logging + .not() + .then(|| env_filter.map(|f| tracing_subscriber::fmt::layer().with_filter(f))); let subscriber = tracing_subscriber::registry::Registry::default() .with(opt_chrome_layer) .with(opt_tracy_layer) - .with(stdout_log); + .with(opt_tree_layer) + .with(opt_stdout_log); tracing::subscriber::set_global_default(subscriber) .map_err(|e| miette::miette!("Failed to set global subscriber: {:?}", e))?; |