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, "[{:?}]", 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}