Skip to main content

rajac_base/
logging.rs

1use std::sync::Once;
2use tracing_error::ErrorLayer;
3use tracing_subscriber::EnvFilter;
4use tracing_subscriber::filter::LevelFilter;
5use tracing_subscriber::layer::Layer;
6use tracing_subscriber::layer::SubscriberExt;
7use tracing_subscriber::util::SubscriberInitExt;
8
9pub fn init_logging() {
10    static INIT: Once = Once::new();
11    INIT.call_once(|| {
12        let fmt_filter = EnvFilter::try_from_default_env()
13            .unwrap_or_else(|_| EnvFilter::builder().parse("warn").unwrap());
14
15        tracing_subscriber::registry()
16            .with(ErrorLayer::default().with_filter(LevelFilter::INFO))
17            .with(
18                tracing_subscriber::fmt::layer()
19                    .with_filter(fmt_filter), /*.with_span_events(FmtSpan::ENTER)*/
20            )
21            .init();
22    });
23}
24
25#[macro_export]
26macro_rules! log_error {
27    ($($arg:tt)*) => {
28        $crate::logging::error!($($arg)*);
29    };
30}
31
32pub use log_error;
33pub use tracing::{debug, error, info, info_span, instrument, trace, warn};