🛈 Note: This is pre-release documentation for the upcoming tracing 0.2.0 ecosystem.

For the release documentation, please see docs.rs, instead.

tracing_macros/
lib.rs

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