1#[macro_export(local_inner_macros)]
89macro_rules! span {
90 ($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr )* ),*,) => {
91 span!(
92 $lvl,
93 target: $target,
94 parent: $parent,
95 $name,
96 $($($k).+ $( = $val)*),*
97 )
98 };
99 ($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr )* ),*) => {
100 {
101 use $crate::callsite;
102 use $crate::callsite::Callsite;
103 let callsite = callsite! {
104 name: $name,
105 kind: $crate::metadata::Kind::SPAN,
106 target: $target,
107 level: $lvl,
108 fields: $($($k).+),*
109 };
110 let meta = callsite.metadata();
111
112 if $lvl <= $crate::level_filters::STATIC_MAX_LEVEL && is_enabled!(callsite) {
113 $crate::Span::child_of(
114 $parent,
115 meta,
116 &valueset!(meta.fields(), $($($k).+ $( = $val)*),*),
117 )
118 } else {
119 __tokio_trace_disabled_span!(
120 meta,
121 &valueset!(meta.fields(), $($($k).+ $( = $val)*),*)
122 )
123 }
124 }
125 };
126 ($lvl:expr, target: $target:expr, $name:expr,$($($k:ident).+ $( = $val:expr )* ),*) => {
127 {
128 use $crate::callsite;
129 use $crate::callsite::Callsite;
130 let callsite = callsite! {
131 name: $name,
132 kind: $crate::metadata::Kind::SPAN,
133 target: $target,
134 level: $lvl,
135 fields: $( $($k).+ ),*
136 };
137 let meta = callsite.metadata();
138
139 if $lvl <= $crate::level_filters::STATIC_MAX_LEVEL && is_enabled!(callsite) {
140 $crate::Span::new(
141 meta,
142 &valueset!(meta.fields(), $($($k).+ $( = $val)*),*),
143 )
144 } else {
145 __tokio_trace_disabled_span!(
146 meta,
147 &valueset!(meta.fields(), $($($k).+ $( = $val)*),*)
148 )
149 }
150 }
151
152 };
153 ($lvl:expr, target: $target:expr, parent: $parent:expr, $name:expr) => {
154 span!($lvl, target: $target, parent: $parent, $name,)
155 };
156 ($lvl:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
157 span!(
158 $lvl,
159 target: __tokio_trace_module_path!(),
160 parent: $parent,
161 $name,
162 $($($k).+ $( = $val)*),*
163 )
164 };
165 ($lvl:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
166 span!(
167 $lvl,
168 target: __tokio_trace_module_path!(),
169 parent: $parent,
170 $name,
171 $($($k).+ $( = $val)*),*
172 )
173 };
174 ($lvl:expr, parent: $parent:expr, $name:expr) => {
175 span!(
176 $lvl,
177 target: __tokio_trace_module_path!(),
178 parent: $parent,
179 $name,
180 )
181 };
182 ($lvl:expr, target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr )* ),*,
183 ) => {
184 span!(
185 $lvl,
186 target: $target,
187 $name,
188 $($($k).+ $( = $val)*),*
189 )
190 };
191 ($lvl:expr, target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr )* ),*) => {
192 span!(
193 $lvl,
194 target: $target,
195 $name,
196 $($($k).+ $( = $val)*),*
197 )
198 };
199 ($lvl:expr, target: $target:expr, $name:expr) => {
200 span!($lvl, target: $target, $name,)
201 };
202 ($lvl:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
203 span!(
204 $lvl,
205 target: __tokio_trace_module_path!(),
206 $name,
207 $($($k).+ $( = $val)*),*
208 )
209 };
210 ($lvl:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
211 span!(
212 $lvl,
213 target: __tokio_trace_module_path!(),
214 $name,
215 $($($k).+ $( = $val)*),*
216 )
217 };
218 ($lvl:expr, $name:expr) => {
219 span!(
220 $lvl,
221 target: __tokio_trace_module_path!(),
222 $name,
223 )
224 };
225}
226
227#[macro_export(local_inner_macros)]
242macro_rules! trace_span {
243 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
244 trace_span!(
245 target: $target,
246 parent: $parent,
247 $name,
248 $($($k).+ $( = $val)*),*
249 )
250 };
251 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
252 span!(
253 $crate::Level::TRACE,
254 target: $target,
255 parent: $parent,
256 $name,
257 $($($k).+ $( = $val)*),*
258 )
259 };
260 (target: $target:expr, parent: $parent:expr, $name:expr) => {
261 trace_span!(target: $target, parent: $parent, $name,)
262 };
263 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
264 trace_span!(
265 parent: $parent,
266 $name,
267 $($($k).+ $( = $val)*),*
268 )
269 };
270 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
271 span!(
272 $crate::Level::TRACE,
273 target: __tokio_trace_module_path!(),
274 $name,
275 $($($k).+ $( = $val)*),*
276 )
277 };
278 (parent: $parent:expr, $name:expr) => {
279 trace_span!(parent: $parent, $name,)
280 };
281 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
282 trace_span!(
283 target: $target,
284 $name,
285 $($($k).+ $( = $val)*),*
286 )
287 };
288 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
289 span!(
290 $crate::Level::TRACE,
291 target: $target,
292 $name,
293 $($($k).+ $( = $val)*),*
294 )
295 };
296 (target: $target:expr, $name:expr) => {
297 trace_span!(target: $target, $name,)
298 };
299 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
300 trace_span!(
301 $name,
302 $($($k).+ $( = $val)*),*
303 )
304 };
305 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
306 span!(
307 $crate::Level::TRACE,
308 target: __tokio_trace_module_path!(),
309 $name,
310 $($($k).+ $( = $val)*),*
311 )
312 };
313 ($name:expr) => {trace_span!($name,)};
314}
315
316#[macro_export(local_inner_macros)]
331macro_rules! debug_span {
332 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
333 debug_span!(
334 target: $target,
335 parent: $parent,
336 $name,
337 $($($k).+ $( = $val)*),*
338 )
339 };
340 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
341 span!(
342 $crate::Level::DEBUG,
343 target: $target,
344 parent: $parent,
345 $name,
346 $($($k).+ $( = $val)*),*
347 )
348 };
349 (target: $target:expr, parent: $parent:expr, $name:expr) => {
350 debug_span!(target: $target, parent: $parent, $name,)
351 };
352 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
353 debug_span!(
354 parent: $parent,
355 $name,
356 $($($k).+ $( = $val)*),*
357 )
358 };
359 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
360 span!(
361 $crate::Level::DEBUG,
362 target: __tokio_trace_module_path!(),
363 $name,
364 $($($k).+ $( = $val)*),*
365 )
366 };
367 (parent: $parent:expr, $name:expr) => {
368 debug_span!(parent: $parent, $name,)
369 };
370 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
371 debug_span!(
372 target: $target,
373 $name,
374 $($($k).+ $( = $val)*),*
375 )
376 };
377 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
378 span!(
379 $crate::Level::DEBUG,
380 target: $target,
381 $name,
382 $($($k).+ $( = $val)*),*
383 )
384 };
385 (target: $target:expr, $name:expr) => {
386 debug_span!(target: $target, $name,)
387 };
388 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
389 debug_span!(
390 $name,
391 $($($k).+ $( = $val)*),*
392 )
393 };
394 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
395 span!(
396 $crate::Level::DEBUG,
397 target: __tokio_trace_module_path!(),
398 $name,
399 $($($k).+ $( = $val)*),*
400 )
401 };
402 ($name:expr) => {debug_span!($name,)};
403}
404
405#[macro_export(local_inner_macros)]
420macro_rules! info_span {
421 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
422 info_span!(
423 target: $target,
424 parent: $parent,
425 $name,
426 $($($k).+ $( = $val)*),*
427 )
428 };
429 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
430 span!(
431 $crate::Level::INFO,
432 target: $target,
433 parent: $parent,
434 $name,
435 $($($k).+ $( = $val)*),*
436 )
437 };
438 (target: $target:expr, parent: $parent:expr, $name:expr) => {
439 info_span!(target: $target, parent: $parent, $name,)
440 };
441 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
442 info_span!(
443 parent: $parent,
444 $name,
445 $($($k).+ $( = $val)*),*
446 )
447 };
448 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
449 span!(
450 $crate::Level::INFO,
451 target: __tokio_trace_module_path!(),
452 $name,
453 $($($k).+ $( = $val)*),*
454 )
455 };
456 (parent: $parent:expr, $name:expr) => {
457 info_span!(parent: $parent, $name,)
458 };
459 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
460 info_span!(
461 target: $target,
462 $name,
463 $($($k).+ $( = $val)*),*
464 )
465 };
466 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
467 span!(
468 $crate::Level::INFO,
469 target: $target,
470 $name,
471 $($($k).+ $( = $val)*),*
472 )
473 };
474 (target: $target:expr, $name:expr) => {
475 info_span!(target: $target, $name,)
476 };
477 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
478 info_span!(
479 $name,
480 $($($k).+ $( = $val)*),*
481 )
482 };
483 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
484 span!(
485 $crate::Level::INFO,
486 target: __tokio_trace_module_path!(),
487 $name,
488 $($($k).+ $( = $val)*),*
489 )
490 };
491 ($name:expr) => {info_span!($name,)};
492}
493
494#[macro_export(local_inner_macros)]
509macro_rules! warn_span {
510 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
511 warn_span!(
512 target: $target,
513 parent: $parent,
514 $name,
515 $($($k).+ $( = $val)*),*
516 )
517 };
518 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
519 span!(
520 $crate::Level::WARN,
521 target: $target,
522 parent: $parent,
523 $name,
524 $($($k).+ $( = $val)*),*
525 )
526 };
527 (target: $target:expr, parent: $parent:expr, $name:expr) => {
528 warn_span!(target: $target, parent: $parent, $name,)
529 };
530 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
531 warn_span!(
532 parent: $parent,
533 $name,
534 $($($k).+ $( = $val)*),*
535 )
536 };
537 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
538 span!(
539 $crate::Level::WARN,
540 target: __tokio_trace_module_path!(),
541 $name,
542 $($($k).+ $( = $val)*),*
543 )
544 };
545 (parent: $parent:expr, $name:expr) => {
546 warn_span!(parent: $parent, $name,)
547 };
548 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
549 warn_span!(
550 target: $target,
551 $name,
552 $($($k).+ $( = $val)*),*
553 )
554 };
555 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
556 span!(
557 $crate::Level::WARN,
558 target: $target,
559 $name,
560 $($($k).+ $( = $val)*),*
561 )
562 };
563 (target: $target:expr, $name:expr) => {
564 warn_span!(target: $target, $name,)
565 };
566 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
567 warn_span!(
568 $name,
569 $($($k).+ $( = $val)*),*
570 )
571 };
572 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
573 span!(
574 $crate::Level::WARN,
575 target: __tokio_trace_module_path!(),
576 $name,
577 $($($k).+ $( = $val)*),*
578 )
579 };
580 ($name:expr) => {warn_span!($name,)};
581}
582#[macro_export(local_inner_macros)]
597macro_rules! error_span {
598 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
599 error_span!(
600 target: $target,
601 parent: $parent,
602 $name,
603 $($($k).+ $( = $val)*),*
604 )
605 };
606 (target: $target:expr, parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
607 span!(
608 $crate::Level::ERROR,
609 target: $target,
610 parent: $parent,
611 $name,
612 $($($k).+ $( = $val)*),*
613 )
614 };
615 (target: $target:expr, parent: $parent:expr, $name:expr) => {
616 error_span!(target: $target, parent: $parent, $name,)
617 };
618 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
619 error_span!(
620 parent: $parent,
621 $name,
622 $($($k).+ $( = $val)*),*
623 )
624 };
625 (parent: $parent:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
626 span!(
627 $crate::Level::ERROR,
628 target: __tokio_trace_module_path!(),
629 $name,
630 $($($k).+ $( = $val)*),*
631 )
632 };
633 (parent: $parent:expr, $name:expr) => {
634 error_span!(parent: $parent, $name,)
635 };
636 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
637 error_span!(
638 target: $target,
639 $name,
640 $($($k).+ $( = $val)*),*
641 )
642 };
643 (target: $target:expr, $name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
644 span!(
645 $crate::Level::ERROR,
646 target: $target,
647 $name,
648 $($($k).+ $( = $val)*),*
649 )
650 };
651 (target: $target:expr, $name:expr) => {
652 error_span!(target: $target, $name,)
653 };
654 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*,) => {
655 error_span!(
656 $name,
657 $($($k).+ $( = $val)*),*
658 )
659 };
660 ($name:expr, $($($k:ident).+ $( = $val:expr)*),*) => {
661 span!(
662 $crate::Level::ERROR,
663 target: __tokio_trace_module_path!(),
664 $name,
665 $($($k).+ $( = $val)*),*
666 )
667 };
668 ($name:expr) => {error_span!($name,)};
669}
670
671#[macro_export(local_inner_macros)]
727macro_rules! event {
728 (target: $target:expr, $lvl:expr, { $( $($k:ident).+ = $val:expr ),* $(,)*} )=> ({
729 {
730 __tokio_trace_log!(
731 target: $target,
732 $lvl,
733 $( $($k).+ = $val ),*
734 );
735
736 if $lvl <= $crate::level_filters::STATIC_MAX_LEVEL {
737 #[allow(unused_imports)]
738 use $crate::{callsite, dispatcher, Event, field::{Value, ValueSet}};
739 use $crate::callsite::Callsite;
740 let callsite = callsite! {
741 name: __tokio_trace_concat!(
742 "event ",
743 __tokio_trace_file!(),
744 ":",
745 __tokio_trace_line!()
746 ),
747 kind: $crate::metadata::Kind::EVENT,
748 target: $target,
749 level: $lvl,
750 fields: $( $($k).+ ),*
751 };
752 if is_enabled!(callsite) {
753 let meta = callsite.metadata();
754 Event::dispatch(meta, &valueset!(meta.fields(), $( $($k).+ = $val),* ));
755 }
756 }
757 }
758 });
759 (
760 target: $target:expr,
761 $lvl:expr,
762 { $( $($k:ident).+ = $val:expr ),*, },
763 $($arg:tt)+
764 ) => ({
765 event!(
766 target: $target,
767 $lvl,
768 { message = __tokio_trace_format_args!($($arg)+), $( $($k).+ = $val ),* }
769 )
770 });
771 (
772 target: $target:expr,
773 $lvl:expr,
774 { $( $($k:ident).+ = $val:expr ),* },
775 $($arg:tt)+
776 ) => ({
777 event!(
778 target: $target,
779 $lvl,
780 { message = __tokio_trace_format_args!($($arg)+), $( $($k).+ = $val ),* }
781 )
782 });
783 (target: $target:expr, $lvl:expr, $( $($k:ident).+ = $val:expr ),+, ) => (
784 event!(target: $target, $lvl, { $($($k).+ = $val),+ })
785 );
786 (target: $target:expr, $lvl:expr, $( $($k:ident).+ = $val:expr ),+ ) => (
787 event!(target: $target, $lvl, { $($($k).+ = $val),+ })
788 );
789 (target: $target:expr, $lvl:expr, $($arg:tt)+ ) => (
790 event!(target: $target, $lvl, { }, $($arg)+)
791 );
792 ( $lvl:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
793 event!(
794 target: __tokio_trace_module_path!(),
795 $lvl,
796 { message = __tokio_trace_format_args!($($arg)+), $($($k).+ = $val),* }
797 )
798 );
799 ( $lvl:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
800 event!(
801 target: __tokio_trace_module_path!(),
802 $lvl,
803 { message = __tokio_trace_format_args!($($arg)+), $($($k).+ = $val),* }
804 )
805 );
806 ( $lvl:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
807 event!(target: __tokio_trace_module_path!(), $lvl, { $($($k).+ = $val),* })
808 );
809 ( $lvl:expr, $( $($k:ident).+ = $val:expr ),* ) => (
810 event!(target: __tokio_trace_module_path!(), $lvl, { $($($k).+ = $val),* })
811 );
812 ( $lvl:expr, $($arg:tt)+ ) => (
813 event!(target: __tokio_trace_module_path!(), $lvl, { }, $($arg)+)
814 );
815}
816
817#[macro_export(local_inner_macros)]
852macro_rules! trace {
853 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
854 event!(target: $target, $crate::Level::TRACE, { $($($k).+ = $val),* }, $($arg)+)
855 );
856 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
857 event!(target: $target, $crate::Level::TRACE, { $($($k).+ = $val),* }, $($arg)+)
858 );
859 (target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
860 event!(target: $target, $crate::Level::TRACE, { $($($k).+ = $val),* })
861 );
862 (target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
863 event!(target: $target, $crate::Level::TRACE, { $($($k).+ = $val),* })
864 );
865 (target: $target:expr, $($arg:tt)+ ) => (
866 drop(event!(target: $target, $crate::Level::TRACE, {}, $($arg)+));
867 );
868 ({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
869 event!(
870 target: __tokio_trace_module_path!(),
871 $crate::Level::TRACE,
872 { $($($k).+ = $val),* },
873 $($arg)+
874 )
875 );
876 ({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
877 event!(
878 target: __tokio_trace_module_path!(),
879 $crate::Level::TRACE,
880 { $($($k).+ = $val),* },
881 $($arg)+
882 )
883 );
884 ($( $($k:ident).+ = $val:expr ),*, ) => (
885 event!(
886 target: __tokio_trace_module_path!(),
887 $crate::Level::TRACE,
888 { $($($k).+ = $val),* }
889 )
890 );
891 ($( $($k:ident).+ = $val:expr ),* ) => (
892 event!(
893 target: __tokio_trace_module_path!(),
894 $crate::Level::TRACE,
895 { $($($k).+ = $val),* }
896 )
897 );
898 ($($arg:tt)+ ) => (
899 event!(
900 target: __tokio_trace_module_path!(),
901 $crate::Level::TRACE,
902 {},
903 $($arg)+
904 )
905 );
906}
907
908#[macro_export(local_inner_macros)]
930macro_rules! debug {
931 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
932 event!(target: $target, $crate::Level::DEBUG, { $($($k).+ = $val),* }, $($arg)+)
933 );
934 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
935 event!(target: $target, $crate::Level::DEBUG, { $($($k).+ = $val),* }, $($arg)+)
936 );
937 (target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
938 event!(target: $target, $crate::Level::DEBUG, { $($($k).+ = $val),* })
939 );
940 (target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
941 event!(target: $target, $crate::Level::DEBUG, { $($($k).+ = $val),* })
942 );
943 (target: $target:expr, $($arg:tt)+ ) => (
944 event!(target: $target, $crate::Level::DEBUG, {}, $($arg)+)
945 );
946 ({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
947 event!(
948 target: __tokio_trace_module_path!(), $crate::Level::DEBUG, { $($($k).+ = $val),* }, $($arg)+)
949 );
950 ({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
951 event!(
952 target: __tokio_trace_module_path!(),
953 $crate::Level::DEBUG,
954 { $($($k).+ = $val),* },
955 $($arg)+
956 )
957 );
958 ($( $($k:ident).+ = $val:expr ),*, ) => (
959 event!(
960 target: __tokio_trace_module_path!(),
961 $crate::Level::DEBUG,
962 { $($($k).+ = $val),* }
963 )
964 );
965 ($( $($k:ident).+ = $val:expr ),* ) => (
966 event!(
967 target: __tokio_trace_module_path!(),
968 $crate::Level::DEBUG,
969 { $($($k).+ = $val),* }
970 )
971 );
972 ($($arg:tt)+ ) => (
973 event!(
974 target: __tokio_trace_module_path!(),
975 $crate::Level::DEBUG,
976 {},
977 $($arg)+
978 )
979 );
980}
981
982#[macro_export(local_inner_macros)]
1011macro_rules! info {
1012 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
1013 event!(target: $target, $crate::Level::INFO, { $($($k).+ = $val),* }, $($arg)+)
1014 );
1015 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
1016 event!(target: $target, $crate::Level::INFO, { $($($k).+ = $val),* }, $($arg)+)
1017 );
1018 (target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
1019 event!(target: $target, $crate::Level::INFO, { $($($k).+ = $val),* })
1020 );
1021 (target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
1022 event!(target: $target, $crate::Level::INFO, { $($($k).+ = $val),* })
1023 );
1024 (target: $target:expr, $($arg:tt)+ ) => (
1025 event!(target: $target, $crate::Level::INFO, {}, $($arg)+)
1026 );
1027 ({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
1028 event!(
1029 target: __tokio_trace_module_path!(),
1030 $crate::Level::INFO,
1031 { $($($k).+ = $val),* },
1032 $($arg)+
1033 )
1034 );
1035 ({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
1036 event!(
1037 target: __tokio_trace_module_path!(),
1038 $crate::Level::INFO,
1039 { $($($k).+ = $val),* },
1040 $($arg)+
1041 )
1042 );
1043 ($( $($k:ident).+ = $val:expr ),*, ) => (
1044 event!(
1045 target: __tokio_trace_module_path!(),
1046 $crate::Level::INFO,
1047 { $($($k).+ = $val),* }
1048 )
1049 );
1050 ($( $($k:ident).+ = $val:expr ),* ) => (
1051 event!(
1052 target: __tokio_trace_module_path!(),
1053 $crate::Level::INFO,
1054 { $($($k).+ = $val),* }
1055 )
1056 );
1057 ($($arg:tt)+ ) => (
1058 event!(
1059 target: __tokio_trace_module_path!(),
1060 $crate::Level::INFO,
1061 {},
1062 $($arg)+
1063 )
1064 );
1065}
1066
1067#[macro_export(local_inner_macros)]
1093macro_rules! warn {
1094 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
1095 event!(target: $target, $crate::Level::WARN, { $($($k).+ = $val),* }, $($arg)+)
1096 );
1097 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
1098 event!(target: $target, $crate::Level::WARN, { $($($k).+ = $val),* }, $($arg)+)
1099 );
1100 (target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
1101 event!(target: $target, $crate::Level::WARN, { $($($k).+ = $val),* })
1102 );
1103 (target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
1104 event!(target: $target, $crate::Level::WARN, { $($($k).+ = $val),* })
1105 );
1106 (target: $target:expr, $($arg:tt)+ ) => (
1107 drop(event!(target: $target, $crate::Level::WARN, {}, $($arg)+));
1108 );
1109 ({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
1110 event!(
1111 target: __tokio_trace_module_path!(),
1112 $crate::Level::WARN,
1113 { $($($k).+ = $val),* },
1114 $($arg)+
1115 )
1116 );
1117 ({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
1118 event!(
1119 target: __tokio_trace_module_path!(),
1120 $crate::Level::WARN,
1121 { $($($k).+ = $val),* },
1122 $($arg)+
1123 )
1124 );
1125 ($( $($k:ident).+ = $val:expr ),*, ) => (
1126 event!(
1127 target: __tokio_trace_module_path!(),
1128 $crate::Level::WARN,{ $($($k).+ = $val),* }
1129 )
1130 );
1131 ($( $($k:ident).+ = $val:expr ),* ) => (
1132 event!(
1133 target: __tokio_trace_module_path!(),
1134 $crate::Level::WARN,
1135 { $($($k).+ = $val),* }
1136 )
1137 );
1138 ($($arg:tt)+ ) => (
1139 event!(
1140 target: __tokio_trace_module_path!(),
1141 $crate::Level::WARN,
1142 {},
1143 $($arg)+
1144 )
1145 );
1146}
1147
1148#[macro_export(local_inner_macros)]
1169macro_rules! error {
1170 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
1171 event!(target: $target, $crate::Level::ERROR, { $($($k).+ = $val),* }, $($arg)+)
1172 );
1173 (target: $target:expr, { $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
1174 event!(target: $target, $crate::Level::ERROR, { $($($k).+ = $val),* }, $($arg)+)
1175 );
1176 (target: $target:expr, $( $($k:ident).+ = $val:expr ),*, ) => (
1177 event!(target: $target, $crate::Level::ERROR, { $($($k).+ = $val),* })
1178 );
1179 (target: $target:expr, $( $($k:ident).+ = $val:expr ),* ) => (
1180 event!(target: $target, $crate::Level::ERROR, { $($($k).+ = $val),* })
1181 );
1182 (target: $target:expr, $($arg:tt)+ ) => (
1183 event!(target: $target, $crate::Level::ERROR, {}, $($arg)+)
1184 );
1185 ({ $( $($k:ident).+ = $val:expr ),*, }, $($arg:tt)+ ) => (
1186 event!(
1187 target: __tokio_trace_module_path!(),
1188 $crate::Level::ERROR,
1189 { $($($k).+ = $val),* },
1190 $($arg)+
1191 )
1192 );
1193 ({ $( $($k:ident).+ = $val:expr ),* }, $($arg:tt)+ ) => (
1194 event!(
1195 target: __tokio_trace_module_path!(),
1196 $crate::Level::ERROR,
1197 { $($($k).+ = $val),* },
1198 $($arg)+
1199 )
1200 );
1201 ($( $($k:ident).+ = $val:expr ),*, ) => (
1202 event!(
1203 target: __tokio_trace_module_path!(),
1204 $crate::Level::ERROR,
1205 { $($($k).+ = $val),* }
1206 )
1207 );
1208 ($( $($k:ident).+ = $val:expr ),* ) => (
1209 event!(
1210 target: __tokio_trace_module_path!(),
1211 $crate::Level::ERROR,
1212 { $($($k).+ = $val),* }
1213 )
1214 );
1215 ($($arg:tt)+ ) => (
1216 event!(
1217 target: __tokio_trace_module_path!(),
1218 $crate::Level::ERROR,
1219 {},
1220 $($arg)+
1221 )
1222 );
1223}
1224
1225#[doc(hidden)]
1227#[macro_export(local_inner_macros)]
1228macro_rules! callsite {
1229 (name: $name:expr, kind: $kind:expr, fields: $( $field_name:expr ),* $(,)*) => ({
1230 callsite! {
1231 name: $name,
1232 kind: $kind,
1233 target: __tokio_trace_module_path!(),
1234 level: $crate::Level::TRACE,
1235 fields: $( $field_name ),*
1236 }
1237 });
1238 (
1239 name: $name:expr,
1240 kind: $kind:expr,
1241 level: $lvl:expr,
1242 fields: $( $field_name:expr ),* $(,)*
1243 ) => ({
1244 callsite! {
1245 name: $name,
1246 kind: $kind,
1247 target: __tokio_trace_module_path!(),
1248 level: $lvl,
1249 fields: $( $field_name ),*
1250 }
1251 });
1252 (
1253 name: $name:expr,
1254 kind: $kind:expr,
1255 target: $target:expr,
1256 level: $lvl:expr,
1257 fields: $( $field_name:expr ),*
1258 $(,)*
1259 ) => ({
1260 use std::sync::{Once, atomic::{self, AtomicUsize, Ordering}};
1261 use $crate::{callsite, Metadata, subscriber::Interest};
1262 struct MyCallsite;
1263 static META: Metadata<'static> = {
1264 metadata! {
1265 name: $name,
1266 target: $target,
1267 level: $lvl,
1268 fields: &[ $( __tokio_trace_stringify!($field_name) ),* ],
1269 callsite: &MyCallsite,
1270 kind: $kind,
1271 }
1272 };
1273 #[allow(deprecated)]
1276 static INTEREST: AtomicUsize = atomic::ATOMIC_USIZE_INIT;
1277 static REGISTRATION: Once = Once::new();
1278 impl MyCallsite {
1279 #[inline]
1280 fn interest(&self) -> Interest {
1281 match INTEREST.load(Ordering::Relaxed) {
1282 0 => Interest::never(),
1283 2 => Interest::always(),
1284 _ => Interest::sometimes(),
1285 }
1286 }
1287 }
1288 impl callsite::Callsite for MyCallsite {
1289 fn set_interest(&self, interest: Interest) {
1290 let interest = match () {
1291 _ if interest.is_never() => 0,
1292 _ if interest.is_always() => 2,
1293 _ => 1,
1294 };
1295 INTEREST.store(interest, Ordering::SeqCst);
1296 }
1297
1298 fn metadata(&self) -> &Metadata {
1299 &META
1300 }
1301 }
1302 REGISTRATION.call_once(|| {
1303 callsite::register(&MyCallsite);
1304 });
1305 &MyCallsite
1306 })
1307}
1308
1309#[macro_export]
1310#[doc(hidden)]
1312macro_rules! is_enabled {
1313 ($callsite:expr) => {{
1314 let interest = $callsite.interest();
1315 if interest.is_never() {
1316 false
1317 } else if interest.is_always() {
1318 true
1319 } else {
1320 let meta = $callsite.metadata();
1321 $crate::dispatcher::get_default(|current| current.enabled(meta))
1322 }
1323 }};
1324}
1325
1326#[doc(hidden)]
1327#[macro_export(local_inner_macros)]
1328macro_rules! valueset {
1329 ($fields:expr, $($($k:ident).+ $( = $val:expr )* ) ,*) => {
1330 {
1331 let mut iter = $fields.iter();
1332 $fields.value_set(&[
1333 $((
1334 &iter.next().expect("FieldSet corrupted (this is a bug)"),
1335 valueset!(@val $($k).+ $(= $val)*)
1336 )),*
1337 ])
1338 }
1339 };
1340 (@val $($k:ident).+ = $val:expr) => {
1341 Some(&$val as &$crate::field::Value)
1342 };
1343 (@val $($k:ident).+) => { None };
1344}
1345
1346#[doc(hidden)]
1357#[macro_export]
1358macro_rules! __tokio_trace_format_args {
1359 ($($args:tt)*) => {
1360 format_args!($($args)*)
1361 };
1362}
1363
1364#[doc(hidden)]
1365#[macro_export]
1366macro_rules! __tokio_trace_module_path {
1367 () => {
1368 module_path!()
1369 };
1370}
1371
1372#[doc(hidden)]
1373#[macro_export]
1374macro_rules! __tokio_trace_file {
1375 () => {
1376 file!()
1377 };
1378}
1379
1380#[doc(hidden)]
1381#[macro_export]
1382macro_rules! __tokio_trace_line {
1383 () => {
1384 line!()
1385 };
1386}
1387
1388#[doc(hidden)]
1389#[macro_export]
1390macro_rules! __tokio_trace_concat {
1391 ($($e:expr),*) => {
1392 concat!($($e),*)
1393 };
1394}
1395
1396#[doc(hidden)]
1397#[macro_export]
1398macro_rules! __tokio_trace_stringify {
1399 ($s:expr) => {
1400 stringify!($s)
1401 };
1402}
1403
1404#[cfg(feature = "log")]
1405#[doc(hidden)]
1406#[macro_export]
1407macro_rules! level_to_log {
1408 ($level:expr) => {
1409 match $level {
1410 $crate::Level::ERROR => $crate::log::Level::Error,
1411 $crate::Level::WARN => $crate::log::Level::Warn,
1412 $crate::Level::INFO => $crate::log::Level::Info,
1413 $crate::Level::DEBUG => $crate::log::Level::Debug,
1414 _ => $crate::log::Level::Trace,
1415 }
1416 };
1417}
1418
1419#[cfg(feature = "log")]
1420#[doc(hidden)]
1421#[macro_export(local_inner_macros)]
1422macro_rules! __tokio_trace_log {
1423 (target: $target:expr, $level:expr, $( $($k:ident).+ $( = $val:expr )* ),* $(,)* ) => {
1424 use $crate::log;
1425 let level = level_to_log!($level);
1426 if level <= log::STATIC_MAX_LEVEL {
1427 let log_meta = log::Metadata::builder()
1428 .level(level)
1429 .target($target)
1430 .build();
1431 let logger = log::logger();
1432 if logger.enabled(&log_meta) {
1433 logger.log(&log::Record::builder()
1434 .file(Some(__tokio_trace_file!()))
1435 .module_path(Some(__tokio_trace_module_path!()))
1436 .line(Some(__tokio_trace_line!()))
1437 .metadata(log_meta)
1438 .args(__tokio_trace_format_args!(
1439 __tokio_trace_concat!(
1440 $(__tokio_trace_log!(@key $($k).+)),*
1441 ),
1442 $(
1443 __tokio_trace_log!(@val_or $($k).+ $( = $val)* )
1444 ),*
1445 ))
1446 .build());
1447 }
1448 }
1449 };
1450 (@key message) => { "{} " };
1451 (@key $($k:ident).+) => { __tokio_trace_concat!(__tokio_trace_stringify!( $($k).+ ), "={:?} ") };
1452 (@val_or $($k:ident).+ = $v:expr) => { $v };
1453 (@val_or $($k:ident).+ ) => { __tokio_trace_format_args!("?") };
1454}
1455
1456#[cfg(not(feature = "log"))]
1457#[doc(hidden)]
1458#[macro_export]
1459macro_rules! __tokio_trace_log {
1460 (target: $target:expr, $level:expr, $( $($k:ident).+ $( = $val:expr )* ),* $(,)* ) => {};
1461}
1462
1463#[cfg(feature = "log")]
1464#[doc(hidden)]
1465#[macro_export]
1466macro_rules! __tokio_trace_disabled_span {
1467 ($meta:expr, $valueset:expr) => {{
1468 let span = $crate::Span::new_disabled($meta);
1469 span.record_all(&$valueset);
1470 span
1471 }};
1472}
1473
1474#[cfg(not(feature = "log"))]
1475#[doc(hidden)]
1476#[macro_export]
1477macro_rules! __tokio_trace_disabled_span {
1478 ($meta:expr, $valueset:expr) => {
1479 $crate::Span::new_disabled($meta)
1480 };
1481}