#[macro_export(local_inner_macros)]
macro_rules! span {
($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr )* ),*,) => {
span!(
$lvl,
target: $target,
parent: $parent,
$name,
$($($k).+ $( = $val)*),*
)
};
($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr )* ),*) => {
{
use $crate::callsite;
use $crate::callsite::Callsite;
let callsite = callsite! {
name: $name,
kind: $crate::metadata::Kind::SPAN,
target: $target,
level: $lvl,
fields: $($($k).+),*
};
let meta = callsite.metadata();
if $lvl <= $crate::level_filters::STATIC_MAX_LEVEL && is_enabled!(callsite) {
$crate::Span::child_of(
$parent,
meta,
&valueset!(meta.fields(), $($($k).+ $( = $val)*),*),
)
} else {
__tokio_trace_disabled_span!(
meta,
&valueset!(meta.fields(), $($($k).+ $( = $val)*),*)
)
}
}
};
($lvl:expr, target: $target:expr, $name:expr,$($($k:ident).+ $( = $val:expr )* ),*) => {
{
use $crate::callsite;
use $crate::callsite::Callsite;
let callsite = callsite! {
name: $name,
kind: $crate::metadata::Kind::SPAN,
target: $target,
level: $lvl,
fields: $( $($k).+ ),*
};
let meta = callsite.metadata();
if $lvl <= $crate::level_filters::STATIC_MAX_LEVEL && is_enabled!(callsite) {
$crate::Span::new(
meta,
&valueset!(meta.fields(), $($($k).+ $( = $val)*),*),
)
} else {
__tokio_trace_disabled_span!(
meta,
&valueset!(meta.fields(), $($($k).+ $( = $val)*),*)
)
}
}
};
($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr) => {
span!($lvl, target: $target, parent: $parent, $name,)
};
($lvl:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
span!(
$lvl,
target: __tokio_trace_module_path!(),
parent: $parent,
$name,
$($($k).+ $( = $val)*),*
)
};
($lvl:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
span!(
$lvl,
target: __tokio_trace_module_path!(),
parent: $parent,
$name,
$($($k).+ $( = $val)*),*
)
};
($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,
)
};
}
#[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)*),*,) => {
trace_span!(
parent: $parent,
$name,
$($($k).+ $( = $val)*),*
)
};
(parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
span!(
$crate::Level::TRACE,
target: __tokio_trace_module_path!(),
$name,
$($($k).+ $( = $val)*),*
)
};
(parent: $parent:expr, $name:expr) => {
trace_span!(parent: $parent, $name,)
};
(target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
trace_span!(
target: $target,
$name,
$($($k).+ $( = $val)*),*
)
};
(target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
span!(
$crate::Level::TRACE,
target: $target,
$name,
$($($k).+ $( = $val)*),*
)
};
(target: $target:expr, $name:expr) => {
trace_span!(target: $target, $name,)
};
($name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
trace_span!(
$name,
$($($k).+ $( = $val)*),*
)
};
($name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
span!(
$crate::Level::TRACE,
target: __tokio_trace_module_path!(),
$name,
$($($k).+ $( = $val)*),*
)
};
($name:expr) => {trace_span!($name,)};
}
#[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,)};
}
#[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,)};
}
#[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,)};
}
#[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,)};
}
#[macro_export(local_inner_macros)]
macro_rules! event {
(target: $target:expr, $lvl:expr, { $( $($k:ident).+ = $val:expr ),* $(,)*} )=> ({
{
__tokio_trace_log!(
target: $target,
$lvl,
$( $($k).+ = $val ),*
);
if $lvl <= $crate::level_filters::STATIC_MAX_LEVEL {
#[allow(unused_imports)]
use $crate::{callsite, dispatcher, Event, field::{Value, ValueSet}};
use $crate::callsite::Callsite;
let callsite = callsite! {
name: __tokio_trace_concat!(
"event ",
__tokio_trace_file!(),
":",
__tokio_trace_line!()
),
kind: $crate::metadata::Kind::EVENT,
target: $target,
level: $lvl,
fields: $( $($k).+ ),*
};
if is_enabled!(callsite) {
let meta = callsite.metadata();
Event::dispatch(meta, &valueset!(meta.fields(), $( $($k).+ = $val),* ));
}
}
}
});
(
target: $target:expr,
$lvl:expr,
{ $( $($k:ident).+ = $val:expr ),*, },
$($arg:tt)+
) => ({
event!(
target: $target,
$lvl,
{ message = __tokio_trace_format_args!($($arg)+), $( $($k).+ = $val ),* }
)
});
(
target: $target:expr,
$lvl:expr,
{ $( $($k:ident).+ = $val:expr ),* },
$($arg:tt)+
) => ({
event!(
target: $target,
$lvl,
{ message = __tokio_trace_format_args!($($arg)+), $( $($k).+ = $val ),* }
)
});
(target: $target:expr, $lvl:expr, $( $($k:ident).+ = $val:expr ),+, ) => (
event!(target: $target, $lvl, { $($($k).+ = $val),+ })
);
(target: $target:expr, $lvl:expr, $( $($k:ident).+ = $val:expr ),+ ) => (
event!(target: $target, $lvl, { $($($k).+ = $val),+ })
);
(target: $target:expr, $lvl:expr, $($arg:tt)+ ) => (
event!(target: $target, $lvl, { }, $($arg)+)
);
( $lvl:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$lvl,
{ message = __tokio_trace_format_args!($($arg)+), $($($k).+ = $val),* }
)
);
( $lvl:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$lvl,
{ message = __tokio_trace_format_args!($($arg)+), $($($k).+ = $val),* }
)
);
( $lvl:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
event!(target: __tokio_trace_module_path!(), $lvl, { $($($k).+ = $val),* })
);
( $lvl:expr, $( $($k:ident).+ = $val:expr ),* ) => (
event!(target: __tokio_trace_module_path!(), $lvl, { $($($k).+ = $val),* })
);
( $lvl:expr, $($arg:tt)+ ) => (
event!(target: __tokio_trace_module_path!(), $lvl, { }, $($arg)+)
);
}
#[macro_export(local_inner_macros)]
macro_rules! trace {
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::TRACE, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::TRACE, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
event!(target: $target, $crate::Level::TRACE, { $($($k).+ = $val),* })
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
event!(target: $target, $crate::Level::TRACE, { $($($k).+ = $val),* })
);
(target: $target:expr, $($arg:tt)+ ) => (
drop(event!(target: $target, $crate::Level::TRACE, {}, $($arg)+));
);
({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::TRACE,
{ $($($k).+ = $val),* },
$($arg)+
)
);
({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::TRACE,
{ $($($k).+ = $val),* },
$($arg)+
)
);
($( $($k:ident).+ = $val:expr ),*, ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::TRACE,
{ $($($k).+ = $val),* }
)
);
($( $($k:ident).+ = $val:expr ),* ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::TRACE,
{ $($($k).+ = $val),* }
)
);
($($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::TRACE,
{},
$($arg)+
)
);
}
#[macro_export(local_inner_macros)]
macro_rules! debug {
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::DEBUG, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::DEBUG, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
event!(target: $target, $crate::Level::DEBUG, { $($($k).+ = $val),* })
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
event!(target: $target, $crate::Level::DEBUG, { $($($k).+ = $val),* })
);
(target: $target:expr, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::DEBUG, {}, $($arg)+)
);
({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(), $crate::Level::DEBUG, { $($($k).+ = $val),* }, $($arg)+)
);
({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::DEBUG,
{ $($($k).+ = $val),* },
$($arg)+
)
);
($( $($k:ident).+ = $val:expr ),*, ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::DEBUG,
{ $($($k).+ = $val),* }
)
);
($( $($k:ident).+ = $val:expr ),* ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::DEBUG,
{ $($($k).+ = $val),* }
)
);
($($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::DEBUG,
{},
$($arg)+
)
);
}
#[macro_export(local_inner_macros)]
macro_rules! info {
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::INFO, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::INFO, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
event!(target: $target, $crate::Level::INFO, { $($($k).+ = $val),* })
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
event!(target: $target, $crate::Level::INFO, { $($($k).+ = $val),* })
);
(target: $target:expr, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::INFO, {}, $($arg)+)
);
({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::INFO,
{ $($($k).+ = $val),* },
$($arg)+
)
);
({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::INFO,
{ $($($k).+ = $val),* },
$($arg)+
)
);
($( $($k:ident).+ = $val:expr ),*, ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::INFO,
{ $($($k).+ = $val),* }
)
);
($( $($k:ident).+ = $val:expr ),* ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::INFO,
{ $($($k).+ = $val),* }
)
);
($($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::INFO,
{},
$($arg)+
)
);
}
#[macro_export(local_inner_macros)]
macro_rules! warn {
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::WARN, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::WARN, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
event!(target: $target, $crate::Level::WARN, { $($($k).+ = $val),* })
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
event!(target: $target, $crate::Level::WARN, { $($($k).+ = $val),* })
);
(target: $target:expr, $($arg:tt)+ ) => (
drop(event!(target: $target, $crate::Level::WARN, {}, $($arg)+));
);
({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::WARN,
{ $($($k).+ = $val),* },
$($arg)+
)
);
({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::WARN,
{ $($($k).+ = $val),* },
$($arg)+
)
);
($( $($k:ident).+ = $val:expr ),*, ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::WARN,{ $($($k).+ = $val),* }
)
);
($( $($k:ident).+ = $val:expr ),* ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::WARN,
{ $($($k).+ = $val),* }
)
);
($($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::WARN,
{},
$($arg)+
)
);
}
#[macro_export(local_inner_macros)]
macro_rules! error {
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::ERROR, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::ERROR, { $($($k).+ = $val),* }, $($arg)+)
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
event!(target: $target, $crate::Level::ERROR, { $($($k).+ = $val),* })
);
(target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
event!(target: $target, $crate::Level::ERROR, { $($($k).+ = $val),* })
);
(target: $target:expr, $($arg:tt)+ ) => (
event!(target: $target, $crate::Level::ERROR, {}, $($arg)+)
);
({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::ERROR,
{ $($($k).+ = $val),* },
$($arg)+
)
);
({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::ERROR,
{ $($($k).+ = $val),* },
$($arg)+
)
);
($( $($k:ident).+ = $val:expr ),*, ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::ERROR,
{ $($($k).+ = $val),* }
)
);
($( $($k:ident).+ = $val:expr ),* ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::ERROR,
{ $($($k).+ = $val),* }
)
);
($($arg:tt)+ ) => (
event!(
target: __tokio_trace_module_path!(),
$crate::Level::ERROR,
{},
$($arg)+
)
);
}
#[doc(hidden)]
#[macro_export(local_inner_macros)]
macro_rules! callsite {
(name: $name:expr, kind: $kind:expr, fields: $( $field_name:expr ),* $(,)*) => ({
callsite! {
name: $name,
kind: $kind,
target: __tokio_trace_module_path!(),
level: $crate::Level::TRACE,
fields: $( $field_name ),*
}
});
(
name: $name:expr,
kind: $kind:expr,
level: $lvl:expr,
fields: $( $field_name:expr ),* $(,)*
) => ({
callsite! {
name: $name,
kind: $kind,
target: __tokio_trace_module_path!(),
level: $lvl,
fields: $( $field_name ),*
}
});
(
name: $name:expr,
kind: $kind:expr,
target: $target:expr,
level: $lvl:expr,
fields: $( $field_name:expr ),*
$(,)*
) => ({
use std::sync::{Once, atomic::{self, AtomicUsize, Ordering}};
use $crate::{callsite, Metadata, subscriber::Interest};
struct MyCallsite;
static META: Metadata<'static> = {
metadata! {
name: $name,
target: $target,
level: $lvl,
fields: &[ $( __tokio_trace_stringify!($field_name) ),* ],
callsite: &MyCallsite,
kind: $kind,
}
};
#[allow(deprecated)]
static INTEREST: AtomicUsize = atomic::ATOMIC_USIZE_INIT;
static REGISTRATION: Once = Once::new();
impl MyCallsite {
#[inline]
fn interest(&self) -> Interest {
match INTEREST.load(Ordering::Relaxed) {
0 => Interest::never(),
2 => Interest::always(),
_ => Interest::sometimes(),
}
}
}
impl callsite::Callsite for MyCallsite {
fn set_interest(&self, interest: Interest) {
let interest = match () {
_ if interest.is_never() => 0,
_ if interest.is_always() => 2,
_ => 1,
};
INTEREST.store(interest, Ordering::SeqCst);
}
fn metadata(&self) -> &Metadata {
&META
}
}
REGISTRATION.call_once(|| {
callsite::register(&MyCallsite);
});
&MyCallsite
})
}
#[macro_export]
#[doc(hidden)]
macro_rules! is_enabled {
($callsite:expr) => {{
let interest = $callsite.interest();
if interest.is_never() {
false
} else if interest.is_always() {
true
} else {
let meta = $callsite.metadata();
$crate::dispatcher::get_default(|current| current.enabled(meta))
}
}};
}
#[doc(hidden)]
#[macro_export(local_inner_macros)]
macro_rules! valueset {
($fields:expr, $($($k:ident).+ $( = $val:expr )* ) ,*) => {
{
let mut iter = $fields.iter();
$fields.value_set(&[
$((
&iter.next().expect("FieldSet corrupted (this is a bug)"),
valueset!(@val $($k).+ $(= $val)*)
)),*
])
}
};
(@val $($k:ident).+ = $val:expr) => {
Some(&$val as &$crate::field::Value)
};
(@val $($k:ident).+) => { None };
}
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_format_args {
($($args:tt)*) => {
format_args!($($args)*)
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_module_path {
() => {
module_path!()
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_file {
() => {
file!()
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_line {
() => {
line!()
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_concat {
($($e:expr),*) => {
concat!($($e),*)
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_stringify {
($s:expr) => {
stringify!($s)
};
}
#[cfg(feature = "log")]
#[doc(hidden)]
#[macro_export]
macro_rules! level_to_log {
($level:expr) => {
match $level {
$crate::Level::ERROR => $crate::log::Level::Error,
$crate::Level::WARN => $crate::log::Level::Warn,
$crate::Level::INFO => $crate::log::Level::Info,
$crate::Level::DEBUG => $crate::log::Level::Debug,
_ => $crate::log::Level::Trace,
}
};
}
#[cfg(feature = "log")]
#[doc(hidden)]
#[macro_export(local_inner_macros)]
macro_rules! __tokio_trace_log {
(target: $target:expr, $level:expr, $( $($k:ident).+ $( = $val:expr )* ),* $(,)* ) => {
use $crate::log;
let level = level_to_log!($level);
if level <= log::STATIC_MAX_LEVEL {
let log_meta = log::Metadata::builder()
.level(level)
.target($target)
.build();
let logger = log::logger();
if logger.enabled(&log_meta) {
logger.log(&log::Record::builder()
.file(Some(__tokio_trace_file!()))
.module_path(Some(__tokio_trace_module_path!()))
.line(Some(__tokio_trace_line!()))
.metadata(log_meta)
.args(__tokio_trace_format_args!(
__tokio_trace_concat!(
$(__tokio_trace_log!(@key $($k).+)),*
),
$(
__tokio_trace_log!(@val_or $($k).+ $( = $val)* )
),*
))
.build());
}
}
};
(@key message) => { "{} " };
(@key $($k:ident).+) => { __tokio_trace_concat!(__tokio_trace_stringify!( $($k).+ ), "={:?} ") };
(@val_or $($k:ident).+ = $v:expr) => { $v };
(@val_or $($k:ident).+ ) => { __tokio_trace_format_args!("?") };
}
#[cfg(not(feature = "log"))]
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_log {
(target: $target:expr, $level:expr, $( $($k:ident).+ $( = $val:expr )* ),* $(,)* ) => {};
}
#[cfg(feature = "log")]
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_disabled_span {
($meta:expr, $valueset:expr) => {{
let span = $crate::Span::new_disabled($meta);
span.record_all(&$valueset);
span
}};
}
#[cfg(not(feature = "log"))]
#[doc(hidden)]
#[macro_export]
macro_rules! __tokio_trace_disabled_span {
($meta:expr, $valueset:expr) => {
$crate::Span::new_disabled($meta)
};
}