Skip to main content

verso/util/
logging.rs

1use std::path::Path;
2use tracing_appender::non_blocking::WorkerGuard;
3use tracing_subscriber::{fmt, prelude::*, EnvFilter};
4
5/// Initialise tracing with daily-rotated file logs at `log_dir`.
6/// Returns a guard that must live for the duration of the program.
7pub 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}