macro_rules! trace_level {
($level:ident by $self:ident, $($args:tt)*) => ({
tracing::$level!(parent: &$self.span, $($args)*);
});
($level:ident @$self:expr, $($args:tt)*) => ({
tracing::$level!(parent: &$self.span, $($args)*);
});
($level:ident in $span:expr, $($args:tt)*) => ({
let sp: &tracing::Span = &$span;
tracing::$level!(parent: sp, $($args)*);
});
($level:ident :$span:expr, $($args:tt)*) => ({
trace_level!($level in $span, $($args)*)
});
($level:ident $($args:tt)*) => ({
tracing::$level!($($args)*);
})
}
macro_rules! trace {
($($args:tt)*) => {trace_level!(trace $($args)*)}
}
macro_rules! debug {
($($args:tt)*) => {trace_level!(debug $($args)*)}
}
macro_rules! info {
($($args:tt)*) => {trace_level!(info $($args)*)}
}
macro_rules! warn {
($($args:tt)*) => {trace_level!(warn $($args)*)}
}
macro_rules! error {
($($args:tt)*) => {trace_level!(error $($args)*)}
}