use tracing_subscriber::EnvFilter;
use crate::ServerError;
pub fn init() -> Result<(), ServerError> {
let filter = env_filter()?;
tracing_subscriber::fmt()
.json()
.with_env_filter(filter)
.with_current_span(true)
.with_span_list(true)
.with_target(true)
.with_timer(tracing_subscriber::fmt::time::SystemTime)
.try_init()
.map_err(|error| ServerError::Config {
message: format!("failed to initialize tracing subscriber: {error}"),
})
}
fn env_filter() -> Result<EnvFilter, ServerError> {
let directive = std::env::var("AION_LOG")
.or_else(|_| std::env::var("RUST_LOG"))
.unwrap_or_else(|_| "info".to_owned());
EnvFilter::try_new(&directive).map_err(|error| ServerError::Config {
message: format!("invalid log filter `{directive}`: {error}"),
})
}