tracing_macros/
lib.rs

1#![cfg_attr(docsrs, deny(rustdoc::broken_intra_doc_links))]
2#[doc(hidden)]
3pub use tracing;
4
5/// Alias of `dbg!` for avoiding conflicts with the `std::dbg!` macro.
6#[macro_export]
7macro_rules! trace_dbg {
8    (target: $target:expr, level: $level:expr, $ex:expr) => {
9        $crate::dbg!(target: $target, level: $level, $ex)
10    };
11    (level: $level:expr, $ex:expr) => {
12        $crate::dbg!(target: module_path!(), level: $level, $ex)
13    };
14    (target: $target:expr, $ex:expr) => {
15        $crate::dbg!(target: $target, level: $crate::tracing::Level::DEBUG, $ex)
16    };
17    ($ex:expr) => {
18        $crate::dbg!(level: $crate::tracing::Level::DEBUG, $ex)
19    };
20}
21
22/// Similar to the `std::dbg!` macro, but generates `tracing` events rather
23/// than printing to stdout.
24///
25/// By default, the verbosity level for the generated events is `DEBUG`, but
26/// this can be customized.
27#[macro_export]
28macro_rules! dbg {
29    (target: $target:expr, level: $level:expr, $ex:expr) => {{
30        match $ex {
31            value => {
32                $crate::tracing::event!(target: $target, $level, ?value, stringify!($ex));
33                value
34            }
35        }
36    }};
37    (level: $level:expr, $ex:expr) => {
38        $crate::dbg!(target: module_path!(), level: $level, $ex)
39    };
40    (target: $target:expr, $ex:expr) => {
41        $crate::dbg!(target: $target, level: $crate::tracing::Level::DEBUG, $ex)
42    };
43    ($ex:expr) => {
44        $crate::dbg!(level: $crate::tracing::Level::DEBUG, $ex)
45    };
46}