foxy/
log.rs

1pub mod foxy {
2  #[allow(unused_imports)]
3  pub use tracing::{error, debug, info, trace, Level};
4  pub use tracing::subscriber::SetGlobalDefaultError;
5  pub use tracing_subscriber::{
6      fmt::format,
7      FmtSubscriber,
8      field::MakeExt,
9  };
10  pub use tracing_unwrap::*;
11
12  #[macro_export]
13  macro_rules! fox_trace {
14    ( $src:literal, $( $msg:literal ),* ) => {
15      {
16        let mut message = String::new();
17        $(
18          message += $msg;
19        )*
20        trace!("{}: {}", $src, message)
21      }
22    }
23  }
24  
25  #[macro_export]
26  macro_rules! fox_info {
27    ( $src:literal, $( $msg:literal ),* ) => {
28      {
29        let mut message = String::new();
30        $(
31          message += $msg;
32        )*
33        info!("{}: {}", $src, message)
34      }
35    }
36  }
37
38  #[macro_export]
39  macro_rules! fox_debug {
40    ( $src:literal, $( $msg:literal ),* ) => {
41      {
42        let mut message = String::new();
43        $(
44          message += $msg;
45        )*
46        debug!("{}: {}", $src, message)
47      }
48    }
49  }
50
51  #[macro_export]
52  macro_rules! fox_error {
53    ( $src:literal, $( $msg:literal ),* ) => {
54      {
55        let mut message = String::new();
56        $(
57          message += $msg;
58        )*
59        error!("{}: {}", $src, message)
60      }
61    }
62  }
63  
64  pub fn setup_logging() -> Result<(), SetGlobalDefaultError> {
65    let fmt = format::debug_fn(|writer, _field, value| {
66        //write!(writer, "[{}: {:?}]", field, value)
67        write!(writer, "[{:?}]", value)
68    }).delimited(" ");
69    let fmt_event = format()
70        .compact()
71        .with_target(false);
72    let fmt_subscriber = FmtSubscriber::builder()
73        .with_max_level(Level::TRACE)
74        .fmt_fields(fmt)
75        .event_format(fmt_event)
76        .finish();
77    tracing::subscriber::set_global_default(fmt_subscriber)
78  }
79}