1#[macro_export]
20macro_rules! span {
21 (target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr) => {
22 $crate::span!(target: $target, parent: $parent, $lvl, $name,)
23 };
24 (target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
25 {
26 use $crate::__macro_support::Callsite as _;
27 static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
28 name: $name,
29 kind: $crate::metadata::Kind::SPAN,
30 target: $target,
31 level: $lvl,
32 fields: $($fields)*
33 };
34 let mut interest = $crate::collect::Interest::never();
35 if $crate::level_enabled!($lvl)
36 && { interest = __CALLSITE.interest(); !interest.is_never() }
37 && __CALLSITE.is_enabled(interest)
38 {
39 let meta = __CALLSITE.metadata();
40 $crate::Span::child_of(
42 $parent,
43 meta,
44 &$crate::valueset!(meta.fields(), $($fields)*),
45 )
46 } else {
47 let span = __CALLSITE.disabled_span();
48 $crate::if_log_enabled! { $lvl, {
49 span.record_all(&$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
50 }};
51 span
52 }
53 }
54 };
55 (target: $target:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
56 {
57 use $crate::__macro_support::{Callsite as _, Registration};
58 static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
59 name: $name,
60 kind: $crate::metadata::Kind::SPAN,
61 target: $target,
62 level: $lvl,
63 fields: $($fields)*
64 };
65
66 let mut interest = $crate::collect::Interest::never();
67 if $crate::level_enabled!($lvl)
68 && { interest = __CALLSITE.interest(); !interest.is_never() }
69 && __CALLSITE.is_enabled(interest)
70 {
71 let meta = __CALLSITE.metadata();
72 $crate::Span::new(
74 meta,
75 &$crate::valueset!(meta.fields(), $($fields)*),
76 )
77 } else {
78 let span = __CALLSITE.disabled_span();
79 $crate::if_log_enabled! { $lvl, {
80 span.record_all(&$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
81 }};
82 span
83 }
84 }
85 };
86 (target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr) => {
87 $crate::span!(target: $target, parent: $parent, $lvl, $name,)
88 };
89 (parent: $parent:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
90 $crate::span!(
91 target: module_path!(),
92 parent: $parent,
93 $lvl,
94 $name,
95 $($fields)*
96 )
97 };
98 (parent: $parent:expr, $lvl:expr, $name:expr) => {
99 $crate::span!(
100 target: module_path!(),
101 parent: $parent,
102 $lvl,
103 $name,
104 )
105 };
106 (target: $target:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
107 $crate::span!(
108 target: $target,
109 $lvl,
110 $name,
111 $($fields)*
112 )
113 };
114 (target: $target:expr, $lvl:expr, $name:expr) => {
115 $crate::span!(target: $target, $lvl, $name,)
116 };
117 ($lvl:expr, $name:expr, $($fields:tt)*) => {
118 $crate::span!(
119 target: module_path!(),
120 $lvl,
121 $name,
122 $($fields)*
123 )
124 };
125 ($lvl:expr, $name:expr) => {
126 $crate::span!(
127 target: module_path!(),
128 $lvl,
129 $name,
130 )
131 };
132}
133
134#[macro_export]
153macro_rules! record_all {
154 ($span:expr, $($fields:tt)*) => {
155 if let Some(meta) = $span.metadata() {
156 $span.record_all(&$crate::valueset!(
157 meta.fields(),
158 $($fields)*
159 ));
160 }
161 };
162}
163
164#[macro_export]
198macro_rules! trace_span {
199 (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
200 $crate::span!(
201 target: $target,
202 parent: $parent,
203 $crate::Level::TRACE,
204 $name,
205 $($field)*
206 )
207 };
208 (target: $target:expr, parent: $parent:expr, $name:expr) => {
209 $crate::trace_span!(target: $target, parent: $parent, $name,)
210 };
211 (parent: $parent:expr, $name:expr, $($field:tt)*) => {
212 $crate::span!(
213 target: module_path!(),
214 parent: $parent,
215 $crate::Level::TRACE,
216 $name,
217 $($field)*
218 )
219 };
220 (parent: $parent:expr, $name:expr) => {
221 $crate::trace_span!(parent: $parent, $name,)
222 };
223 (target: