use tracing_appender::non_blocking::WorkerGuard;
use tracing_appender::rolling;
use tracing_subscriber::{fmt, fmt::format::FmtSpan, prelude::*, EnvFilter};
pub fn setup_tracing_file_console(dir: &str, file: &str) -> WorkerGuard {
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("INFO"));
let file_appender = rolling::hourly(dir, file);
let (file_non_blocking, guard) = tracing_appender::non_blocking(file_appender);
let file_layer = fmt::layer()
.with_writer(file_non_blocking)
.with_ansi(false) .with_span_events(FmtSpan::FULL);
let console_layer = fmt::layer()
.with_writer(std::io::stdout) .with_ansi(true) .with_span_events(FmtSpan::FULL);
tracing_subscriber::registry()
.with(file_layer)
.with(console_layer)
.with(env_filter) .init();
guard
}
pub fn setup_tracing_console() {
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("INFO"));
let console_layer = fmt::layer()
.with_writer(std::io::stdout) .with_ansi(false) .with_span_events(FmtSpan::FULL);
tracing_subscriber::registry()
.with(console_layer)
.with(env_filter) .init();
}