use tracing_subscriber::EnvFilter;
use tracing_subscriber::filter::LevelFilter;
pub fn init_tracing() {
let _ = tracing_subscriber::fmt()
.with_env_filter(
EnvFilter::builder()
.with_default_directive(LevelFilter::INFO.into())
.from_env_lossy(),
)
.with_writer(std::io::stderr)
.with_target(true)
.compact()
.try_init();
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn init_tracing_is_idempotent() {
init_tracing();
init_tracing();
init_tracing();
}
#[test]
fn default_env_filter_builds_with_info() {
let filter = EnvFilter::builder()
.with_default_directive(LevelFilter::INFO.into())
.from_env_lossy();
assert!(filter.max_level_hint().is_some());
}
#[test]
fn valid_module_directive_parses() {
let filter = EnvFilter::try_new("beam_core=debug").expect("valid directive should parse");
assert!(filter.max_level_hint().is_some());
}
#[test]
fn invalid_rust_log_fallback_does_not_panic() {
let filter = EnvFilter::try_new("!!!invalid!!!");
if let Err(_e) = filter {
}
}
}