mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-09-07 00:00:08 +02:00
trace: Remove default trace level and make levels mandatory on span! macro (#1025)
## Motivation Was determined that having the span! macro default to the TRACE level is probably not ideal (see discussion on #952). Closes #1013 ## Solution Remove default trace level and make log lvl mandatory on span! macro, and add the respective `trace_span!`, `debug_span!`, `info_span!`, `warn_span!` and `error_span!` macros that behave as span! macro, but with defined log levels ## Notes I think this is it, also removed some captures that were repeated, and some testcases that also seemed repeated after adding the mandatory log level, but please review it, if more tests or examples are needed happy to provide (tried to find a way to get the generated macros log level, but didn't find one, if there is a way i can add tests to assert that the generated macro has the matching log level ). thanks
This commit is contained in:
committed by
Eliza Weisman
parent
599955f716
commit
597f271c08
@@ -56,9 +56,10 @@
|
||||
//! construct one span and perform the entire loop inside of that span, like:
|
||||
//! ```rust
|
||||
//! # #[macro_use] extern crate tokio_trace;
|
||||
//! # use tokio_trace::Level;
|
||||
//! # fn main() {
|
||||
//! # let n = 1;
|
||||
//! span!("my loop").enter(|| {
|
||||
//! span!(Level::TRACE, "my loop").enter(|| {
|
||||
//! for i in 0..n {
|
||||
//! # let _ = i;
|
||||
//! // ...
|
||||
@@ -69,11 +70,12 @@
|
||||
//! Or, should we create a new span for each iteration of the loop, as in:
|
||||
//! ```rust
|
||||
//! # #[macro_use] extern crate tokio_trace;
|
||||
//! # use tokio_trace::Level;
|
||||
//! # fn main() {
|
||||
//! # let n = 1u64;
|
||||
//! for i in 0..n {
|
||||
//! # let _ = i;
|
||||
//! span!("my loop", iteration = i).enter(|| {
|
||||
//! span!(Level::TRACE, "my loop", iteration = i).enter(|| {
|
||||
//! // ...
|
||||
//! })
|
||||
//! }
|
||||
@@ -154,9 +156,10 @@
|
||||
//! ```rust
|
||||
//! # #[macro_use]
|
||||
//! # extern crate tokio_trace;
|
||||
//! # use tokio_trace::Level;
|
||||
//! # fn main() {
|
||||
//! // Construct a new span named "my span".
|
||||
//! let mut span = span!("my span");
|
||||
//! // Construct a new span named "my span" with trace log level.
|
||||
//! let mut span = span!(Level::TRACE, "my span");
|
||||
//! span.enter(|| {
|
||||
//! // Any trace events in this closure or code called by it will occur within
|
||||
//! // the span.
|
||||
@@ -188,7 +191,7 @@
|
||||
//! ```rust
|
||||
//! #[macro_use]
|
||||
//! extern crate tokio_trace;
|
||||
//! use tokio_trace::field;
|
||||
//! use tokio_trace::{field, Level};
|
||||
//! # #[derive(Debug)] pub struct Yak(String);
|
||||
//! # impl Yak { fn shave(&mut self, _: u32) {} }
|
||||
//! # fn find_a_razor() -> Result<u32, u32> { Ok(1) }
|
||||
@@ -196,7 +199,7 @@
|
||||
//! pub fn shave_the_yak(yak: &mut Yak) {
|
||||
//! // Create a new span for this invocation of `shave_the_yak`, annotated
|
||||
//! // with the yak being shaved as a *field* on the span.
|
||||
//! span!("shave_the_yak", yak = field::debug(&yak)).enter(|| {
|
||||
//! span!(Level::TRACE, "shave_the_yak", yak = field::debug(&yak)).enter(|| {
|
||||
//! // Since the span is annotated with the yak, it is part of the context
|
||||
//! // for everything happening inside the span. Therefore, we don't need
|
||||
//! // to add it to the message for this event, as the `log` crate does.
|
||||
|
||||
+476
-95
@@ -6,8 +6,9 @@
|
||||
/// ```
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # use tokio_trace::Level;
|
||||
/// # fn main() {
|
||||
/// let mut span = span!("my span");
|
||||
/// let mut span = span!(Level::TRACE, "my span");
|
||||
/// span.enter(|| {
|
||||
/// // do work inside the span...
|
||||
/// });
|
||||
@@ -18,8 +19,9 @@
|
||||
/// ```
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # use tokio_trace::Level;
|
||||
/// # fn main() {
|
||||
/// span!("my span", foo = 2, bar = "a string").enter(|| {
|
||||
/// span!(Level::TRACE, "my span", foo = 2, bar = "a string").enter(|| {
|
||||
/// // do work inside the span...
|
||||
/// });
|
||||
/// # }
|
||||
@@ -29,8 +31,10 @@
|
||||
/// ```
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # use tokio_trace::Level;
|
||||
/// # fn main() {
|
||||
/// span!(
|
||||
/// Level::TRACE,
|
||||
/// "my span",
|
||||
/// foo = 2,
|
||||
/// bar = "a string",
|
||||
@@ -42,10 +46,11 @@
|
||||
/// ```
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # use tokio_trace::Level;
|
||||
/// # fn main() {
|
||||
/// span!(
|
||||
/// Level::TRACE,
|
||||
/// target: "app_span",
|
||||
/// level: tokio_trace::Level::TRACE,
|
||||
/// "my span",
|
||||
/// foo = 3,
|
||||
/// bar = "another string"
|
||||
@@ -57,8 +62,9 @@
|
||||
/// ```
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # use tokio_trace::Level;
|
||||
/// # fn main() {
|
||||
/// let mut my_span = span!("my span", foo = 2, bar);
|
||||
/// let mut my_span = span!(Level::TRACE, "my span", foo = 2, bar);
|
||||
/// my_span.record("bar", &7);
|
||||
/// # }
|
||||
/// ```
|
||||
@@ -67,8 +73,10 @@
|
||||
/// ```rust,compile_fail
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # use tokio_trace::Level;
|
||||
/// # fn main() {
|
||||
/// span!(
|
||||
/// Level::TRACE,
|
||||
/// "too many fields!",
|
||||
/// a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7, h = 8, i = 9,
|
||||
/// j = 10, k = 11, l = 12, m = 13, n = 14, o = 15, p = 16, q = 17,
|
||||
@@ -79,28 +87,16 @@
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! span {
|
||||
(
|
||||
target: $target:expr,
|
||||
level: $lvl:expr,
|
||||
parent: $parent:expr,
|
||||
$name:expr,
|
||||
$($k:ident $( = $val:expr )* ),*,
|
||||
) => {
|
||||
($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr )* ),*,) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: $target,
|
||||
level: $lvl,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(
|
||||
target: $target:expr,
|
||||
level: $lvl:expr,
|
||||
parent: $parent:expr,
|
||||
$name:expr,
|
||||
$($k:ident $( = $val:expr )* ),*
|
||||
) => {
|
||||
($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr )* ),*) => {
|
||||
{
|
||||
use $crate::callsite;
|
||||
use $crate::callsite::Callsite;
|
||||
@@ -126,12 +122,7 @@ macro_rules! span {
|
||||
}
|
||||
}
|
||||
};
|
||||
(
|
||||
target: $target:expr,
|
||||
level: $lvl:expr,
|
||||
$name:expr,
|
||||
$($k:ident $( = $val:expr )* ),*
|
||||
) => {
|
||||
($lvl:expr, target: $target:expr, $name:expr,$($k:ident $( = $val:expr )* ),*) => {
|
||||
{
|
||||
use $crate::callsite;
|
||||
use $crate::callsite::Callsite;
|
||||
@@ -157,34 +148,118 @@ macro_rules! span {
|
||||
}
|
||||
|
||||
};
|
||||
(target: $target:expr, level: $lvl:expr, parent: $parent:expr, $name:expr) => {
|
||||
span!(target: $target, level: $lvl, parent: $parent, $name,)
|
||||
($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr) => {
|
||||
span!($lvl, target: $target, parent: $parent, $name,)
|
||||
};
|
||||
(level: $lvl:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr )* ),*,) => {
|
||||
($lvl:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $lvl,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(level: $lvl:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr )* ),*) => {
|
||||
($lvl:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $lvl,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(level: $lvl:expr, parent: $parent:expr, $name:expr) => {
|
||||
span!(target: __tokio_trace_module_path!(), level: $lvl, parent: $parent, $name,)
|
||||
($lvl:expr, parent: $parent:expr, $name:expr) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: __tokio_trace_module_path!(),
|
||||
parent: $parent,
|
||||
$name,
|
||||
)
|
||||
};
|
||||
($lvl:expr, target: $target:expr, $name:expr, $($k:ident $( = $val:expr )* ),*,
|
||||
) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($lvl:expr, target: $target:expr, $name:expr, $($k:ident $( = $val:expr )* ),*) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($lvl:expr, target: $target:expr, $name:expr) => {
|
||||
span!($lvl, target: $target, $name,)
|
||||
};
|
||||
($lvl:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($lvl:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($lvl:expr, $name:expr) => {
|
||||
span!(
|
||||
$lvl,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
)
|
||||
};
|
||||
}
|
||||
|
||||
/// Constructs a span at the trace level.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # fn main() {
|
||||
/// let mut span = trace_span!("my span");
|
||||
/// span.enter(|| {
|
||||
/// // do work inside the span...
|
||||
/// });
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! trace_span {
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
trace_span!(
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::TRACE,
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr) => {
|
||||
trace_span!(target: $target, parent: $parent, $name,)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
span!(
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $crate::Level::TRACE,
|
||||
trace_span!(
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
@@ -192,98 +267,403 @@ macro_rules! span {
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::TRACE,
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $crate::Level::TRACE,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr) => {
|
||||
span!(
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $crate::Level::TRACE,
|
||||
parent: $parent,
|
||||
$name,
|
||||
)
|
||||
trace_span!(parent: $parent, $name,)
|
||||
};
|
||||
(
|
||||
target: $target:expr,
|
||||
level: $lvl:expr,
|
||||
$name:expr,
|
||||
$($k:ident $( = $val:expr )* ),*,
|
||||
) => {
|
||||
span!(
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
trace_span!(
|
||||
target: $target,
|
||||
level: $lvl,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(
|
||||
target: $target:expr,
|
||||
level: $lvl:expr,
|
||||
$name:expr,
|
||||
$($k:ident $( = $val:expr )* ),*
|
||||
) => {
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::TRACE,
|
||||
target: $target,
|
||||
level: $lvl,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, level: $lvl:expr, $name:expr) => {
|
||||
span!(target: $target, level: $lvl, $name,)
|
||||
};
|
||||
(target: $target:expr, level: $lvl:expr, $name:expr,) => {
|
||||
span!(
|
||||
target: $target,
|
||||
level: $lvl,
|
||||
$name,
|
||||
)
|
||||
};
|
||||
(level: $lvl:expr, $name:expr, $($k:ident $( = $val:expr )* ),*,) => {
|
||||
span!(
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $lvl,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(level: $lvl:expr, $name:expr, $($k:ident $( = $val:expr )* ),*) => {
|
||||
span!(
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $lvl,
|
||||
$name, $($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(level: $lvl:expr, $name:expr) => {
|
||||
span!(target: __tokio_trace_module_path!(), level: $lvl, $name,)
|
||||
(target: $target:expr, $name:expr) => {
|
||||
trace_span!(target: $target, $name,)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
span!(
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $crate::Level::TRACE,
|
||||
trace_span!(
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::TRACE,
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $crate::Level::TRACE,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr) => {
|
||||
span!(
|
||||
target: __tokio_trace_module_path!(),
|
||||
level: $crate::Level::TRACE,
|
||||
($name:expr) => {trace_span!($name,)};
|
||||
}
|
||||
|
||||
/// Constructs a span at the debug level.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # fn main() {
|
||||
/// let mut span = debug_span!("my span");
|
||||
/// span.enter(|| {
|
||||
/// // do work inside the span...
|
||||
/// });
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! debug_span {
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
debug_span!(
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::DEBUG,
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr) => {
|
||||
debug_span!(target: $target, parent: $parent, $name,)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
debug_span!(
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::DEBUG,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr) => {
|
||||
debug_span!(parent: $parent, $name,)
|
||||
};
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
debug_span!(
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::DEBUG,
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, $name:expr) => {
|
||||
debug_span!(target: $target, $name,)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
debug_span!(
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::DEBUG,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr) => {debug_span!($name,)};
|
||||
}
|
||||
|
||||
/// Constructs a span at the info level.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # fn main() {
|
||||
/// let mut span = info_span!("my span");
|
||||
/// span.enter(|| {
|
||||
/// // do work inside the span...
|
||||
/// });
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! info_span {
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
info_span!(
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::INFO,
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr) => {
|
||||
info_span!(target: $target, parent: $parent, $name,)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
info_span!(
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::INFO,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr) => {
|
||||
info_span!(parent: $parent, $name,)
|
||||
};
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
info_span!(
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::INFO,
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, $name:expr) => {
|
||||
info_span!(target: $target, $name,)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
info_span!(
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::INFO,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr) => {info_span!($name,)};
|
||||
}
|
||||
|
||||
/// Constructs a span at the warn level.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # fn main() {
|
||||
/// let mut span = warn_span!("my span");
|
||||
/// span.enter(|| {
|
||||
/// // do work inside the span...
|
||||
/// });
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! warn_span {
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
warn_span!(
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::WARN,
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr) => {
|
||||
warn_span!(target: $target, parent: $parent, $name,)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
warn_span!(
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::WARN,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr) => {
|
||||
warn_span!(parent: $parent, $name,)
|
||||
};
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
warn_span!(
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::WARN,
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, $name:expr) => {
|
||||
warn_span!(target: $target, $name,)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
warn_span!(
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::WARN,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr) => {warn_span!($name,)};
|
||||
}
|
||||
/// Constructs a span at the error level.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```rust
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # fn main() {
|
||||
/// let mut span = error_span!("my span");
|
||||
/// span.enter(|| {
|
||||
/// // do work inside the span...
|
||||
/// });
|
||||
/// # }
|
||||
/// ```
|
||||
#[macro_export(local_inner_macros)]
|
||||
macro_rules! error_span {
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
error_span!(
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::ERROR,
|
||||
target: $target,
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, parent: $parent:expr, $name:expr) => {
|
||||
error_span!(target: $target, parent: $parent, $name,)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
error_span!(
|
||||
parent: $parent,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::ERROR,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(parent: $parent:expr, $name:expr) => {
|
||||
error_span!(parent: $parent, $name,)
|
||||
};
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
error_span!(
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, $name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::ERROR,
|
||||
target: $target,
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
(target: $target:expr, $name:expr) => {
|
||||
error_span!(target: $target, $name,)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*,) => {
|
||||
error_span!(
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr, $($k:ident $( = $val:expr)*),*) => {
|
||||
span!(
|
||||
$crate::Level::ERROR,
|
||||
target: __tokio_trace_module_path!(),
|
||||
$name,
|
||||
$($k $( = $val)*),*
|
||||
)
|
||||
};
|
||||
($name:expr) => {error_span!($name,)};
|
||||
}
|
||||
|
||||
/// Constructs a new `Event`.
|
||||
@@ -331,8 +711,9 @@ macro_rules! span {
|
||||
/// ```rust,compile_fail
|
||||
/// # #[macro_use]
|
||||
/// # extern crate tokio_trace;
|
||||
/// # use tokio_trace::Level;
|
||||
/// # fn main() {
|
||||
/// event!(tokio_trace::Level::INFO,
|
||||
/// event!(Level::INFO,
|
||||
/// a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7, h = 8, i = 9,
|
||||
/// j = 10, k = 11, l = 12, m = 13, n = 14, o = 15, p = 16, q = 17,
|
||||
/// r = 18, s = 19, t = 20, u = 21, v = 22, w = 23, x = 24, y = 25,
|
||||
|
||||
@@ -12,9 +12,10 @@
|
||||
//! if the span exists:
|
||||
//! ```
|
||||
//! # #[macro_use] extern crate tokio_trace;
|
||||
//! # use tokio_trace::Level;
|
||||
//! # fn main() {
|
||||
//! let my_var: u64 = 5;
|
||||
//! let mut my_span = span!("my_span", my_var = &my_var);
|
||||
//! let mut my_span = span!(Level::TRACE, "my_span", my_var = &my_var);
|
||||
//!
|
||||
//! my_span.enter(|| {
|
||||
//! // perform some work in the context of `my_span`...
|
||||
@@ -78,9 +79,10 @@
|
||||
//! exists. For example:
|
||||
//! ```
|
||||
//! # #[macro_use] extern crate tokio_trace;
|
||||
//! # use tokio_trace::Level;
|
||||
//! # fn main() {
|
||||
//! {
|
||||
//! span!("my_span").enter(|| {
|
||||
//! span!(Level::TRACE, "my_span").enter(|| {
|
||||
//! // perform some work in the context of `my_span`...
|
||||
//! }); // --> Subscriber::exit(my_span)
|
||||
//!
|
||||
@@ -96,10 +98,11 @@
|
||||
//! time it is exited. For example:
|
||||
//! ```
|
||||
//! # #[macro_use] extern crate tokio_trace;
|
||||
//! # use tokio_trace::Level;
|
||||
//! # fn main() {
|
||||
//! use tokio_trace::Span;
|
||||
//!
|
||||
//! let my_span = span!("my_span");
|
||||
//! let my_span = span!(Level::TRACE, "my_span");
|
||||
//! // Drop the handle to the span.
|
||||
//! drop(my_span); // --> Subscriber::drop_span(my_span)
|
||||
//! # }
|
||||
|
||||
Reference in New Issue
Block a user