tycho-util 0.3.7

Shared utilities for node components.
Documentation
#![allow(clippy::exit)]

use std::borrow::Cow;

use tracing_subscriber::EnvFilter;

pub fn init_logger(test_name: &str, filter: &str) {
    let mut filter = Cow::Borrowed(filter);
    if let Ok(env) = std::env::var(EnvFilter::DEFAULT_ENV) {
        filter = Cow::Owned(env);
    }

    tracing_subscriber::fmt()
        .with_env_filter(EnvFilter::try_new(filter).expect("tracing directives"))
        .try_init()
        .ok();

    tracing::info!("{test_name}");

    std::panic::set_hook(Box::new(|info| {
        use std::io::Write;
        let backtrace = std::backtrace::Backtrace::capture();

        tracing::error!("{info}\n{backtrace}");
        std::io::stderr().flush().ok();
        std::io::stdout().flush().ok();
        std::process::exit(1);
    }));
}