1use std::path::Path;
2use tracing_appender::non_blocking::WorkerGuard;
3use tracing_subscriber::{fmt, prelude::*, EnvFilter};
4
5pub fn init(log_dir: &Path) -> anyhow::Result<WorkerGuard> {
8 std::fs::create_dir_all(log_dir)?;
9 let appender = tracing_appender::rolling::daily(log_dir, "verso.log");
10 let (nb, guard) = tracing_appender::non_blocking(appender);
11
12 let filter = EnvFilter::try_from_env("VERSO_LOG").unwrap_or_else(|_| EnvFilter::new("info"));
13
14 tracing_subscriber::registry()
15 .with(filter)
16 .with(fmt::layer().with_writer(nb).with_ansi(false))
17 .init();
18
19 Ok(guard)
20}