use tracing_subscriber::{EnvFilter, fmt};
use crate::core::{CoreError, CoreResult};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct LogConfig {
pub filter: String,
pub ansi: bool,
}
impl Default for LogConfig {
fn default() -> Self {
Self {
filter: "info".to_string(),
ansi: true,
}
}
}
pub fn init_tracing(config: LogConfig) -> CoreResult<()> {
let filter = EnvFilter::try_new(config.filter).unwrap_or_else(|_| EnvFilter::new("info"));
fmt()
.with_env_filter(filter)
.with_ansi(config.ansi)
.try_init()
.map_err(|_| CoreError::SubscriberInit)
}
#[cfg(test)]
mod tests {
use super::{LogConfig, init_tracing};
#[test]
fn init_tracing_is_callable() {
let _ = init_tracing(LogConfig {
filter: "debug".to_string(),
ansi: false,
});
}
}