use std::path::PathBuf; use tracing_subscriber::layer::SubscriberExt; use tracing_subscriber::util::SubscriberInitExt; use tracing_subscriber::EnvFilter; pub fn init_logger(log_dir: Option<&str>, with_file: bool) { let env_filter = EnvFilter::try_from_default_env() .unwrap_or_else(|_| EnvFilter::new("info")); let terminal = tracing_subscriber::fmt::layer() .with_target(false) .with_ansi(true); if with_file { if let Some(dir) = log_dir { let dir_path = PathBuf::from(dir); std::fs::create_dir_all(&dir_path).ok(); let file_appender = tracing_appender::rolling::daily(&dir_path, "ias.log"); let file_layer = tracing_subscriber::fmt::layer() .with_target(false) .with_ansi(false) .with_writer(file_appender); tracing_subscriber::registry() .with(env_filter) .with(terminal) .with(file_layer) .init(); return; } } tracing_subscriber::registry() .with(env_filter) .with(terminal) .init(); }