use crate::error::{Result, TectonError};
use tracing_subscriber::{fmt, prelude::*, EnvFilter};
pub fn init_tracing(default_level: &str) -> Result<()> {
let filter = EnvFilter::try_from_default_env()
.or_else(|_| EnvFilter::try_new(default_level))
.map_err(|e| TectonError::config(format!("invalid log filter: {e}")))?;
if tracing::dispatcher::has_been_set() {
return Ok(());
}
tracing_subscriber::registry()
.with(filter)
.with(
fmt::layer()
.with_target(true)
.with_thread_ids(false)
.compact(),
)
.try_init()
.map_err(|e| TectonError::Internal(format!("failed to init tracing: {e}")))?;
Ok(())
}