macro_rules! span {
($args:expr, $block:expr) => { ... };
($args:expr, $a:expr, $block:expr) => { ... };
($args:expr, $a:expr, $b:expr, $block:expr) => { ... };
($args:expr, $a:expr, $b:expr, $c:expr, $block:expr) => { ... };
($args:expr, $a:expr, $b:expr, $c:expr, $d:expr, $block:expr) => { ... };
($args:expr, $a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $block:expr) => { ... };
($args:expr, $a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $block:expr) => { ... };
($args:expr, $a:expr, $b:expr, $c:expr, $d:expr, $e:expr, $f:expr, $g:expr, $block:expr) => { ... };
}Expand description
Create a tracing span.
Spans are pairs of trace! logs. Every span wraps a block, and logs a message at the start,
of the block and a message after the block has finished. This works in asynchronous contexts
too.
Each span takes a name, a block, and optionally a list of key-value pairs in between those.
Once structured logging becomes part of log (currently feature gated as kv_unstable), we’ll
move to support arbitrary key-value pairs.
Because of the way this macro is constructed, we currently support up to 9 key-value pairs. Which makes a total of 12 arguments.
§Examples
use async_log::span;
use log::info;
span!("main", {
let x = "foo";
info!("this {}", x);
span!("inner, x={}", x, {
info!("we must go deeper {}", x);
});
})