use std::io;
use super::{paths::CachePaths, Result};
pub fn init(paths: &CachePaths) -> Result<tracing_appender::non_blocking::WorkerGuard> {
let appender = tracing_appender::rolling::Builder::new()
.filename_prefix(&paths.log_file_name)
.rotation(tracing_appender::rolling::Rotation::DAILY)
.max_log_files(5)
.build(&paths.log_dir)
.map_err(|e| io::Error::new(io::ErrorKind::Other, format!("log appender: {e}")))?;
let (non_blocking, guard) = tracing_appender::non_blocking(appender);
let env_filter = tracing_subscriber::EnvFilter::try_from_env("ZSHRS_LOG")
.unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info"));
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
let fmt_layer = tracing_subscriber::fmt::layer()
.with_writer(non_blocking)
.with_ansi(false)
.with_target(true)
.with_level(true);
let _ = tracing_subscriber::registry()
.with(env_filter)
.with(fmt_layer)
.try_init();
Ok(guard)
}