use std::path::Path;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::EnvFilter;
pub fn init_logging(vault_root: &Path) -> Result<(), Box<dyn std::error::Error>> {
let logs_dir = vault_root.join(".tomarkdown").join("logs");
std::fs::create_dir_all(&logs_dir)?;
let file_appender = tracing_appender::rolling::daily(&logs_dir, "vault.log");
let (non_blocking, _guard) = tracing_appender::non_blocking(file_appender);
let file_layer = tracing_subscriber::fmt::layer()
.with_writer(non_blocking)
.with_ansi(false)
.with_target(true)
.with_thread_ids(false)
.with_file(true)
.with_line_number(true);
let console_layer = tracing_subscriber::fmt::layer()
.with_writer(std::io::stdout)
.with_ansi(true)
.with_target(true)
.with_thread_ids(false);
let env_filter = EnvFilter::try_from_default_env()
.unwrap_or_else(|_| EnvFilter::new("info"));
tracing_subscriber::registry()
.with(env_filter)
.with(console_layer)
.with(file_layer)
.try_init()?;
Ok(())
}