use std::io::Error; use tracing_error::ErrorLayer; use tracing_subscriber::{self, layer::SubscriberExt, util::SubscriberInitExt}; pub fn initialize_logging() -> Result<(),Error> { let log_file = std::fs::File::create("log.log")?; let file_subscriber = tracing_subscriber::fmt::layer() .with_file(true) .with_line_number(true) .with_writer(log_file) .with_target(false) .with_ansi(false); tracing_subscriber::registry().with(file_subscriber).with(ErrorLayer::default()).init(); Ok(()) } #[macro_export] macro_rules! trace_dbg { (target: $target:expr, level: $level:expr, $ex:expr) => {{ match $ex { value => { tracing::event!(target: $target, $level, ?value, stringify!($ex)); value } } }}; (level: $level:expr, $ex:expr) => { trace_dbg!(target: module_path!(), level: $level, $ex) }; (target: $target:expr, $ex:expr) => { trace_dbg!(target: $target, level: tracing::Level::DEBUG, $ex) }; ($ex:expr) => { trace_dbg!(level: tracing::Level::DEBUG, $ex) }; }