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::subscriber::Interest::never();
35            if $crate::level_enabled!($lvl)
36                && { interest = __CALLSITE.interest(); !interest.is_never() }
37                && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), 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 = $crate::__macro_support::__disabled_span(__CALLSITE.metadata());
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 _;
58            static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
59                name: $name,
60                kind: $crate::metadata::Kind::SPAN,
61                target: $target,
62                level: $lvl,
63                fields: $($fields)*
64            };
65            let mut interest = $crate::subscriber::Interest::never();
66            if $crate::level_enabled!($lvl)
67                && { interest = __CALLSITE.interest(); !interest.is_never() }
68                && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
69            {
70                let meta = __CALLSITE.metadata();
71                $crate::Span::new(
73                    meta,
74                    &$crate::valueset!(meta.fields(), $($fields)*),
75                )
76            } else {
77                let span = $crate::__macro_support::__disabled_span(__CALLSITE.metadata());
78                $crate::if_log_enabled! { $lvl, {
79                    span.record_all(&$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
80                }};
81                span
82            }
83        }
84    };
85    (target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr) => {
86        $crate::span!(target: $target, parent: $parent, $lvl, $name,)
87    };
88    (parent: $parent:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
89        $crate::span!(
90            target: module_path!(),
91            parent: $parent,
92            $lvl,
93            $name,
94            $($fields)*
95        )
96    };
97    (parent: $parent:expr, $lvl:expr, $name:expr) => {
98        $crate::span!(
99            target: module_path!(),
100            parent: $parent,
101            $lvl,
102            $name,
103        )
104    };
105    (target: $target:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
106        $crate::span!(
107            target: $target,
108            $lvl,
109            $name,
110            $($fields)*
111        )
112    };
113    (target: $target:expr, $lvl:expr, $name:expr) => {
114        $crate::span!(target: $target, $lvl, $name,)
115    };
116    ($lvl:expr, $name:expr, $($fields:tt)*) => {
117        $crate::span!(
118            target: module_path!(),
119            $lvl,
120            $name,
121            $($fields)*
122        )
123    };
124    ($lvl:expr, $name:expr) => {
125        $crate::span!(
126            target: module_path!(),
127            $lvl,
128            $name,
129        )
130    };
131}
132
133#[macro_export]
167macro_rules! trace_span {
168    (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
169        $crate::span!(
170            target: $target,
171            parent: $parent,
172            $crate::Level::TRACE,
173            $name,
174            $($field)*
175        )
176    };
177    (target: $target:expr, parent: $parent:expr, $name:expr) => {
178        $crate::trace_span!(target: $target, parent: $parent, $name,)
179    };
180    (parent: $parent:expr, $name:expr, $($field:tt)*) => {
181        $crate::span!(
182            target: module_path!(),
183            parent: $parent,
184            $crate::Level::TRACE,
185            $name,
186            $($field)*
187        )
188    };
189    (parent: $parent:expr, $name:expr) => {
190        $crate::trace_span!(parent: $parent, $name,)
191    };
192    (target: $target:expr, $name:expr, $($field:tt)*) => {
193        $crate::span!(
194            target: $target,
195            $crate::Level::TRACE,
196            $name,
197            $($field)*
198        )
199    };
200    (target: $target:expr, $name:expr) => {
201        $crate::trace_span!(target: $target, $name,)
202    };
203    ($name:expr, $($field:tt)*) => {
204        $crate::span!(
205            target: module_path!(),
206            $crate::Level::TRACE,
207            $name,
208            $($field)*
209        )
210    };
211    ($name:expr) => { $crate::trace_span!($name,) };
212}
213
214#[macro_export]
248macro_rules! debug_span {
249    (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
250        $crate::span!(
251            target: $target,
252            parent: $parent,
253            $crate::Level::DEBUG,
254            $name,
255            $($field)*
256        )
257    };
258    (target: $target:expr, parent: $parent:expr, $name:expr) => {
259        $crate::debug_span!(target: $target, parent: $parent, $name,)
260    };
261    (parent: $parent:expr, $name:expr, $($field:tt)*) => {
262        $crate::span!(
263            target: module_path!(),
264            parent: $parent,
265            $crate::Level::DEBUG,
266            $name,
267            $($field)*
268        )
269    };
270    (parent: $parent:expr, $name:expr) => {
271        $crate::debug_span!(parent: $parent, $name,)
272    };
273    (target: $target:expr, $name:expr, $($field:tt)*) => {
274        $crate::span!(
275            target: $target,
276            $crate::Level::DEBUG,
277            $name,
278            $($field)*
279        )
280    };
281    (target: $target:expr, $name:expr) => {
282        $crate::debug_span!(target: $target, $name,)
283    };
284    ($name:expr, $($field:tt)*) => {
285        $crate::span!(
286            target: module_path!(),
287            $crate::Level::DEBUG,
288            $name,
289            $($field)*
290        )
291    };
292    ($name:expr) => {$crate::debug_span!($name,)};
293}
294
295#[macro_export]
329macro_rules! info_span {
330    (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
331        $crate::span!(
332            target: $target,
333            parent: $parent,
334            $crate::Level::INFO,
335            $name,
336            $($field)*
337        )
338    };
339    (target: $target:expr, parent: $parent:expr, $name:expr) => {
340        $crate::info_span!(target: $target, parent: $parent, $name,)
341    };
342    (parent: $parent:expr, $name:expr, $($field:tt)*) => {
343        $crate::span!(
344            target: module_path!(),
345            parent: $parent,
346            $crate::Level::INFO,
347            $name,
348            $($field)*
349        )
350    };
351    (parent: $parent:expr, $name:expr) => {
352        $crate::info_span!(parent: $parent, $name,)
353    };
354    (target: $target:expr, $name:expr, $($field:tt)*) => {
355        $crate::span!(
356            target: $target,
357            $crate::Level::INFO,
358            $name,
359            $($field)*
360        )
361    };
362    (target: $target:expr, $name:expr) => {
363        $crate::info_span!(target: $target, $name,)
364    };
365    ($name:expr, $($field:tt)*) => {
366        $crate::span!(
367            target: module_path!(),
368            $crate::Level::INFO,
369            $name,
370            $($field)*
371        )
372    };
373    ($name:expr) => {$crate::info_span!($name,)};
374}
375
376#[macro_export]
410macro_rules! warn_span {
411    (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
412        $crate::span!(
413            target: $target,
414            parent: $parent,
415            $crate::Level::WARN,
416            $name,
417            $($field)*
418        )
419    };
420    (target: $target:expr, parent: $parent:expr, $name:expr) => {
421        $crate::warn_span!(target: $target, parent: $parent, $name,)
422    };
423    (parent: $parent:expr, $name:expr, $($field:tt)*) => {
424        $crate::span!(
425            target: module_path!(),
426            parent: $parent,
427            $crate::Level::WARN,
428            $name,
429            $($field)*
430        )
431    };
432    (parent: $parent:expr, $name:expr) => {
433        $crate::warn_span!(parent: $parent, $name,)
434    };
435    (target: $target:expr, $name:expr, $($field:tt)*) => {
436        $crate::span!(
437            target: $target,
438            $crate::Level::WARN,
439            $name,
440            $($field)*
441        )
442    };
443    (target: $target:expr, $name:expr) => {
444        $crate::warn_span!(target: $target, $name,)
445    };
446    ($name:expr, $($field:tt)*) => {
447        $crate::span!(
448            target: module_path!(),
449            $crate::Level::WARN,
450            $name,
451            $($field)*
452        )
453    };
454    ($name:expr) => {$crate::warn_span!($name,)};
455}
456#[macro_export]
490macro_rules! error_span {
491    (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
492        $crate::span!(
493            target: $target,
494            parent: $parent,
495            $crate::Level::ERROR,
496            $name,
497            $($field)*
498        )
499    };
500    (target: $target:expr, parent: $parent:expr, $name:expr) => {
501        $crate::error_span!(target: $target, parent: $parent, $name,)
502    };
503    (parent: $parent:expr, $name:expr, $($field:tt)*) => {
504        $crate::span!(
505            target: module_path!(),
506            parent: $parent,
507            $crate::Level::ERROR,
508            $name,
509            $($field)*
510        )
511    };
512    (parent: $parent:expr, $name:expr) => {
513        $crate::error_span!(parent: $parent, $name,)
514    };
515    (target: $target:expr, $name:expr, $($field:tt)*) => {
516        $crate::span!(
517            target: $target,
518            $crate::Level::ERROR,
519            $name,
520            $($field)*
521        )
522    };
523    (target: $target:expr, $name:expr) => {
524        $crate::error_span!(target: $target, $name,)
525    };
526    ($name:expr, $($field:tt)*) => {
527        $crate::span!(
528            target: module_path!(),
529            $crate::Level::ERROR,
530            $name,
531            $($field)*
532        )
533    };
534    ($name:expr) => {$crate::error_span!($name,)};
535}
536
537#[macro_export]
585macro_rules! event {
586    (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
588        use $crate::__macro_support::Callsite as _;
589        static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
590            name: $name,
591            kind: $crate::metadata::Kind::EVENT,
592            target: $target,
593            level: $lvl,
594            fields: $($fields)*
595        };
596
597        let enabled = $crate::level_enabled!($lvl) && {
598            let interest = __CALLSITE.interest();
599            !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
600        };
601        if enabled {
602            (|value_set: $crate::field::ValueSet| {
603                $crate::__tracing_log!(
604                    $lvl,
605                    __CALLSITE,
606                    &value_set
607                );
608                let meta = __CALLSITE.metadata();
609                $crate::Event::child_of(
611                    $parent,
612                    meta,
613                    &value_set
614                );
615            })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
616        } else {
617            $crate::__tracing_log!(
618                $lvl,
619                __CALLSITE,
620                &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
621            );
622        }
623    });
624    (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
625        $crate::event!(
626            name: $name,
627            target: $target,
628            parent: $parent,
629            $lvl,
630            { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
631        )
632    );
633    (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
634        $crate::event!(name: $name, target: $target, parent: $parent, $lvl, { $($k).+ = $($fields)* })
635    );
636    (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
637        $crate::event!(name: $name, target: $target, parent: $parent, $lvl, { $($arg)+ })
638    );
639
640    (name: $name:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
642        use $crate::__macro_support::Callsite as _;
643        static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
644            name: $name,
645            kind: $crate::metadata::Kind::EVENT,
646            target: $target,
647            level: $lvl,
648            fields: $($fields)*
649        };
650        let enabled = $crate::level_enabled!($lvl) && {
651            let interest = __CALLSITE.interest();
652            !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
653        };
654        if enabled {
655            (|value_set: $crate::field::ValueSet| {
656                let meta = __CALLSITE.metadata();
657                $crate::Event::dispatch(
659                    meta,
660                    &value_set
661                );
662                $crate::__tracing_log!(
663                    $lvl,
664                    __CALLSITE,
665                    &value_set
666                );
667            })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
668        } else {
669            $crate::__tracing_log!(
670                $lvl,
671                __CALLSITE,
672                &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
673            );
674        }
675    });
676    (name: $name:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
677        $crate::event!(
678            name: $name,
679            target: $target,
680            $lvl,
681            { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
682        )
683    );
684    (name: $name:expr, target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
685        $crate::event!(name: $name, target: $target, $lvl, { $($k).+ = $($fields)* })
686    );
687    (name: $name:expr, target: $target:expr, $lvl:expr, $($arg:tt)+) => (
688        $crate::event!(name: $name, target: $target, $lvl, { $($arg)+ })
689    );
690
691    (target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
693        use $crate::__macro_support::Callsite as _;
694        static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
695            name: $crate::__macro_support::concat!(
696                "event ",
697                $crate::__macro_support::file!(),
698                ":",
699                $crate::__macro_support::line!()
700            ),
701            kind: $crate::metadata::Kind::EVENT,
702            target: $target,
703            level: $lvl,
704            fields: $($fields)*
705        };
706
707        let enabled = $crate::level_enabled!($lvl) && {
708            let interest = __CALLSITE.interest();
709            !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
710        };
711        if enabled {
712            (|value_set: $crate::field::ValueSet| {
713                $crate::__tracing_log!(
714                    $lvl,
715                    __CALLSITE,
716                    &value_set
717                );
718                let meta = __CALLSITE.metadata();
719                $crate::Event::child_of(
721                    $parent,
722                    meta,
723                    &value_set
724                );
725            })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
726        } else {
727            $crate::__tracing_log!(
728                $lvl,
729                __CALLSITE,
730                &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
731            );
732        }
733    });
734    (target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
735        $crate::event!(
736            target: $target,
737            parent: $parent,
738            $lvl,
739            { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
740        )
741    );
742    (target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
743        $crate::event!(target: $target, parent: $parent, $lvl, { $($k).+ = $($fields)* })
744    );
745    (target: $target:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
746        $crate::event!(target: $target, parent: $parent, $lvl, { $($arg)+ })
747    );
748
749    (name: $name:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
751        use $crate::__macro_support::Callsite as _;
752        static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
753            name: $name,
754            kind: $crate::metadata::Kind::EVENT,
755            target: module_path!(),
756            level: $lvl,
757            fields: $($fields)*
758        };
759
760        let enabled = $crate::level_enabled!($lvl) && {
761            let interest = __CALLSITE.interest();
762            !interest.is_never() && __CALLSITE.is_enabled(interest)
763        };
764        if enabled {
765            (|value_set: $crate::field::ValueSet| {
766                $crate::__tracing_log!(
767                    $lvl,
768                    __CALLSITE,
769                    &value_set
770                );
771                let meta = __CALLSITE.metadata();
772                $crate::Event::child_of(
774                    $parent,
775                    meta,
776                    &value_set
777                );
778            })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
779        } else {
780            $crate::__tracing_log!(
781                $lvl,
782                __CALLSITE,
783                &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
784            );
785        }
786    });
787    (name: $name:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
788        $crate::event!(
789            name: $name,
790            parent: $parent,
791            $lvl,
792            { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
793        )
794    );
795    (name: $name:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
796        $crate::event!(name: $name, parent: $parent, $lvl, { $($k).+ = $($fields)* })
797    );
798    (name: $name:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
799        $crate::event!(name: $name, parent: $parent, $lvl, { $($arg)+ })
800    );
801
802    (name: $name:expr, $lvl:expr, { $($fields:tt)* } )=> ({
804        use $crate::__macro_support::Callsite as _;
805        static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
806            name: $name,
807            kind: $crate::metadata::Kind::EVENT,
808            target: module_path!(),
809            level: $lvl,
810            fields: $($fields)*
811        };
812        let enabled = $crate::level_enabled!($lvl) && {
813            let interest = __CALLSITE.interest();
814            !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
815        };
816        if enabled {
817            (|value_set: $crate::field::ValueSet| {
818                let meta = __CALLSITE.metadata();
819                $crate::Event::dispatch(
821                    meta,
822                    &value_set
823                );
824                $crate::__tracing_log!(
825                    $lvl,
826                    __CALLSITE,
827                    &value_set
828                );
829            })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
830        } else {
831            $crate::__tracing_log!(
832                $lvl,
833                __CALLSITE,
834                &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
835            );
836        }
837    });
838    (name: $name:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
839        $crate::event!(
840            name: $name,
841            $lvl,
842            { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
843        )
844    );
845    (name: $name:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
846        $crate::event!(name: $name, $lvl, { $($k).+ = $($fields)* })
847    );
848    (name: $name:expr, $lvl:expr, $($arg:tt)+ ) => (
849        $crate::event!(name: $name, $lvl, { $($arg)+ })
850    );
851
852    (target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
854        use $crate::__macro_support::Callsite as _;
855        static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
856            name: $crate::__macro_support::concat!(
857                "event ",
858                $crate::__macro_support::file!(),
859                ":",
860                $crate::__macro_support::line!()
861            ),
862            kind: $crate::metadata::Kind::EVENT,
863            target: $target,
864            level: $lvl,
865            fields: $($fields)*
866        };
867        let enabled = $crate::level_enabled!($lvl) && {
868            let interest = __CALLSITE.interest();
869            !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
870        };
871        if enabled {
872            (|value_set: $crate::field::ValueSet| {
873                let meta = __CALLSITE.metadata();
874                $crate::Event::dispatch(
876                    meta,
877                    &value_set
878                );
879                $crate::__tracing_log!(
880                    $lvl,
881                    __CALLSITE,
882                    &value_set
883                );
884            })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
885        } else {
886            $crate::__tracing_log!(
887                $lvl,
888                __CALLSITE,
889                &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
890            );
891        }
892    });
893    (target: $target:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
894        $crate::event!(
895            target: $target,
896            $lvl,
897            { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
898        )
899    );
900    (target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
901        $crate::event!(target: $target, $lvl, { $($k).+ = $($fields)* })
902    );
903    (target: $target:expr, $lvl:expr, $($arg:tt)+ ) => (
904        $crate::event!(target: $target, $lvl, { $($arg)+ })
905    );
906
907    (parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
909        $crate::event!(
910            target: module_path!(),
911            parent: $parent,
912            $lvl,
913            { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
914        )
915    );
916    (parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($field:tt)*) => (
917        $crate::event!(
918            target: module_path!(),
919            parent: $parent,
920            $lvl,
921            { $($k).+ = $($field)*}
922        )
923    );
924    (parent: $parent:expr, $lvl:expr, ?$($k:ident).+ = $($field:tt)*) => (
925        $crate::event!(
926            target: module_path!(),
927            parent: $parent,
928            $lvl,
929            { ?$($k).+ = $($field)*}
930        )
931    );
932    (parent: $parent:expr, $lvl:expr, %$($k:ident).+ = $($field:tt)*) => (
933        $crate::event!(
934            target: module_path!(),
935            parent: $parent,
936            $lvl,
937            { %$($k).+ = $($field)*}
938        )
939    );
940    (parent: $parent:expr, $lvl:expr, $($k:ident).+, $($field:tt)*) => (
941        $crate::event!(
942            target: module_path!(),
943            parent: $parent,
944            $lvl,
945            { $($k).+, $($field)*}
946        )
947    );
948    (parent: $parent:expr, $lvl:expr, %$($k:ident).+, $($field:tt)*) => (
949        $crate::event!(
950            target: module_path!(),
951            parent: $parent,
952            $lvl,
953            { %$($k).+, $($field)*}
954        )
955    );
956    (parent: $parent:expr, $lvl:expr, ?$($k:ident).+, $($field:tt)*) => (
957        $crate::event!(
958            target: module_path!(),
959            parent: $parent,
960            $lvl,
961            { ?$($k).+, $($field)*}
962        )
963    );
964    (parent: $parent:expr, $lvl:expr, $($arg:tt)+ ) => (
965        $crate::event!(target: module_path!(), parent: $parent, $lvl, { $($arg)+ })
966    );
967
968    ( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
970        $crate::event!(
971            target: module_path!(),
972            $lvl,
973            { message = $crate::__macro_support::format_args!($($arg)+), $($fields)* }
974        )
975    );
976    ( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
977        $crate::event!(
978            target: module_path!(),
979            $lvl,
980            { message = format_args!($($arg)+), $($fields)* }
981        )
982    );
983    ($lvl:expr, $($k:ident).+ = $($field:tt)*) => (
984        $crate::event!(
985            target: module_path!(),
986            $lvl,
987            { $($k).+ = $($field)*}
988        )
989    );
990    ($lvl:expr, $($k:ident).+, $($field:tt)*) => (
991        $crate::event!(
992            target: module_path!(),
993            $lvl,
994            { $($k).+, $($field)*}
995        )
996    );
997    ($lvl:expr, ?$($k:ident).+, $($field:tt)*) => (
998        $crate::event!(
999            target: module_path!(),
1000            $lvl,
1001            { ?$($k).+, $($field)*}
1002        )
1003    );
1004    ($lvl:expr, %$($k:ident).+, $($field:tt)*) => (
1005        $crate::event!(
1006            target: module_path!(),
1007            $lvl,
1008            { %$($k).+, $($field)*}
1009        )
1010    );
1011    ($lvl:expr, ?$($k:ident).+) => (
1012        $crate::event!($lvl, ?$($k).+,)
1013    );
1014    ($lvl:expr, %$($k:ident).+) => (
1015        $crate::event!($lvl, %$($k).+,)
1016    );
1017    ($lvl:expr, $($k:ident).+) => (
1018        $crate::event!($lvl, $($k).+,)
1019    );
1020    ( $lvl:expr, $($arg:tt)+ ) => (
1021        $crate::event!(target: module_path!(), $lvl, { $($arg)+ })
1022    );
1023}
1024
1025#[macro_export]
1053macro_rules! event_enabled {
1054    ($($rest:tt)*)=> (
1055        $crate::enabled!(kind: $crate::metadata::Kind::EVENT, $($rest)*)
1056    )
1057}
1058
1059#[macro_export]
1087macro_rules! span_enabled {
1088    ($($rest:tt)*)=> (
1089        $crate::enabled!(kind: $crate::metadata::Kind::SPAN, $($rest)*)
1090    )
1091}
1092
1093#[macro_export]
1184macro_rules! enabled {
1185    (kind: $kind:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
1186        if $crate::level_enabled!($lvl) {
1187            use $crate::__macro_support::Callsite as _;
1188            static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
1189                name: $crate::__macro_support::concat!(
1190                    "enabled ",
1191                    $crate::__macro_support::file!(),
1192                    ":",
1193                    $crate::__macro_support::line!()
1194                ),
1195                kind: $kind.hint(),
1196                target: $target,
1197                level: $lvl,
1198                fields: $($fields)*
1199            };
1200            let interest = __CALLSITE.interest();
1201            if !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest) {
1202                let meta = __CALLSITE.metadata();
1203                $crate::dispatcher::get_default(|current| current.enabled(meta))
1204            } else {
1205                false
1206            }
1207        } else {
1208            false
1209        }
1210    });
1211    (kind: $kind:expr, target: $target:expr, $lvl:expr ) => (
1213        $crate::enabled!(kind: $kind, target: $target, $lvl, { })
1214    );
1215    (target: $target:expr, $lvl:expr ) => (
1216        $crate::enabled!(kind: $crate::metadata::Kind::HINT, target: $target, $lvl, { })
1217    );
1218
1219    (kind: $kind:expr, target: $target:expr, $lvl:expr, $($field:tt)*) => (
1221        $crate::enabled!(
1222            kind: $kind,
1223            target: $target,
1224            $lvl,
1225            { $($field)*}
1226        )
1227    );
1228    (target: $target:expr, $lvl:expr, $($field:tt)*) => (
1229        $crate::enabled!(
1230            kind: $crate::metadata::Kind::HINT,
1231            target: $target,
1232            $lvl,
1233            { $($field)*}
1234        )
1235    );
1236
1237    (kind: $kind:expr, $lvl:expr, $($field:tt)*) => (
1239        $crate::enabled!(
1240            kind: $kind,
1241            target: module_path!(),
1242            $lvl,
1243            { $($field)*}
1244        )
1245    );
1246
1247    (kind: $kind:expr, $lvl:expr) => (
1249        $crate::enabled!(kind: $kind, target: module_path!(), $lvl, { })
1250    );
1251    ($lvl:expr) => (
1252        $crate::enabled!(kind: $crate::metadata::Kind::HINT, target: module_path!(), $lvl, { })
1253    );
1254
1255    ($lvl:expr, $($field:tt)*) => (
1257        $crate::enabled!(
1258            kind: $crate::metadata::Kind::HINT,
1259            target: module_path!(),
1260            $lvl,
1261            { $($field)*}
1262        )
1263    );
1264}
1265
1266#[macro_export]
1303macro_rules! trace {
1304    (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1306        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
1307    );
1308    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1309        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)* })
1310    );
1311    (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1312        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { ?$($k).+ $($field)* })
1313    );
1314    (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1315        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { %$($k).+ $($field)* })
1316    );
1317    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1318        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
1319    );
1320
1321    (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1323        $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
1324    );
1325    (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
1326        $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)* })
1327    );
1328    (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
1329        $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { ?$($k).+ $($field)* })
1330    );
1331    (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
1332        $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { %$($k).+ $($field)* })
1333    );
1334    (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
1335        $crate::event!(name: $name, target: $target, $crate::Level::TRACE, {}, $($arg)+)
1336    );
1337
1338    (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1340        $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
1341    );
1342    (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1343        $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)* })
1344    );
1345    (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1346        $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { ?$($k).+ $($field)* })
1347    );
1348    (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1349        $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { %$($k).+ $($field)* })
1350    );
1351    (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1352        $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
1353    );
1354
1355    (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1357        $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
1358    );
1359    (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1360        $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)* })
1361    );
1362    (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1363        $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { ?$($k).+ $($field)* })
1364    );
1365    (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1366        $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { %$($k).+ $($field)* })
1367    );
1368    (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1369        $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
1370    );
1371
1372    (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1374        $crate::event!(name: $name, $crate::Level::TRACE, { $($field)* }, $($arg)*)
1375    );
1376    (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
1377        $crate::event!(name: $name, $crate::Level::TRACE, { $($k).+ $($field)* })
1378    );
1379    (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
1380        $crate::event!(name: $name, $crate::Level::TRACE, { ?$($k).+ $($field)* })
1381    );
1382    (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
1383        $crate::event!(name: $name, $crate::Level::TRACE, { %$($k).+ $($field)* })
1384    );
1385    (name: $name:expr, $($arg:tt)+ ) => (
1386        $crate::event!(name: $name, $crate::Level::TRACE, {}, $($arg)+)
1387    );
1388
1389    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1391        $crate::event!(target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
1392    );
1393    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
1394        $crate::event!(target: $target, $crate::Level::TRACE, { $($k).+ $($field)* })
1395    );
1396    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
1397        $crate::event!(target: $target, $crate::Level::TRACE, { ?$($k).+ $($field)* })
1398    );
1399    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
1400        $crate::event!(target: $target, $crate::Level::TRACE, { %$($k).+ $($field)* })
1401    );
1402    (target: $target:expr, $($arg:tt)+ ) => (
1403        $crate::event!(target: $target, $crate::Level::TRACE, {}, $($arg)+)
1404    );
1405
1406    (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
1408        $crate::event!(
1409            target: module_path!(),
1410            parent: $parent,
1411            $crate::Level::TRACE,
1412            { $($field)+ },
1413            $($arg)+
1414        )
1415    );
1416    (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
1417        $crate::event!(
1418            target: module_path!(),
1419            parent: $parent,
1420            $crate::Level::TRACE,
1421            { $($k).+ = $($field)*}
1422        )
1423    );
1424    (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
1425        $crate::event!(
1426            target: module_path!(),
1427            parent: $parent,
1428            $crate::Level::TRACE,
1429            { ?$($k).+ = $($field)*}
1430        )
1431    );
1432    (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
1433        $crate::event!(
1434            target: module_path!(),
1435            parent: $parent,
1436            $crate::Level::TRACE,
1437            { %$($k).+ = $($field)*}
1438        )
1439    );
1440    (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
1441        $crate::event!(
1442            target: module_path!(),
1443            parent: $parent,
1444            $crate::Level::TRACE,
1445            { $($k).+, $($field)*}
1446        )
1447    );
1448    (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
1449        $crate::event!(
1450            target: module_path!(),
1451            parent: $parent,
1452            $crate::Level::TRACE,
1453            { ?$($k).+, $($field)*}
1454        )
1455    );
1456    (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
1457        $crate::event!(
1458            target: module_path!(),
1459            parent: $parent,
1460            $crate::Level::TRACE,
1461            { %$($k).+, $($field)*}
1462        )
1463    );
1464    (parent: $parent:expr, $($arg:tt)+) => (
1465        $crate::event!(
1466            target: module_path!(),
1467            parent: $parent,
1468            $crate::Level::TRACE,
1469            {},
1470            $($arg)+
1471        )
1472    );
1473
1474    ({ $($field:tt)+ }, $($arg:tt)+ ) => (
1476        $crate::event!(
1477            target: module_path!(),
1478            $crate::Level::TRACE,
1479            { $($field)+ },
1480            $($arg)+
1481        )
1482    );
1483    ($($k:ident).+ = $($field:tt)*) => (
1484        $crate::event!(
1485            target: module_path!(),
1486            $crate::Level::TRACE,
1487            { $($k).+ = $($field)*}
1488        )
1489    );
1490    (?$($k:ident).+ = $($field:tt)*) => (
1491        $crate::event!(
1492            target: module_path!(),
1493            $crate::Level::TRACE,
1494            { ?$($k).+ = $($field)*}
1495        )
1496    );
1497    (%$($k:ident).+ = $($field:tt)*) => (
1498        $crate::event!(
1499            target: module_path!(),
1500            $crate::Level::TRACE,
1501            { %$($k).+ = $($field)*}
1502        )
1503    );
1504    ($($k:ident).+, $($field:tt)*) => (
1505        $crate::event!(
1506            target: module_path!(),
1507            $crate::Level::TRACE,
1508            { $($k).+, $($field)*}
1509        )
1510    );
1511    (?$($k:ident).+, $($field:tt)*) => (
1512        $crate::event!(
1513            target: module_path!(),
1514            $crate::Level::TRACE,
1515            { ?$($k).+, $($field)*}
1516        )
1517    );
1518    (%$($k:ident).+, $($field:tt)*) => (
1519        $crate::event!(
1520            target: module_path!(),
1521            $crate::Level::TRACE,
1522            { %$($k).+, $($field)*}
1523        )
1524    );
1525    (?$($k:ident).+) => (
1526        $crate::event!(
1527            target: module_path!(),
1528            $crate::Level::TRACE,
1529            { ?$($k).+ }
1530        )
1531    );
1532    (%$($k:ident).+) => (
1533        $crate::event!(
1534            target: module_path!(),
1535            $crate::Level::TRACE,
1536            { %$($k).+ }
1537        )
1538    );
1539    ($($k:ident).+) => (
1540        $crate::event!(
1541            target: module_path!(),
1542            $crate::Level::TRACE,
1543            { $($k).+ }
1544        )
1545    );
1546    ($($arg:tt)+) => (
1547        $crate::event!(
1548            target: module_path!(),
1549            $crate::Level::TRACE,
1550            $($arg)+
1551        )
1552    );
1553}
1554
1555#[macro_export]
1579macro_rules! debug {
1580    (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1582        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
1583    );
1584    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1585        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)* })
1586    );
1587    (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1588        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
1589    );
1590    (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1591        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { %$($k).+ $($field)* })
1592    );
1593    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1594        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
1595    );
1596
1597    (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1599        $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
1600    );
1601    (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
1602        $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)* })
1603    );
1604    (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
1605        $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
1606    );
1607    (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
1608        $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { %$($k).+ $($field)* })
1609    );
1610    (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
1611        $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, {}, $($arg)+)
1612    );
1613
1614    (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1616        $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
1617    );
1618    (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1619        $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)* })
1620    );
1621    (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1622        $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
1623    );
1624    (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1625        $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { %$($k).+ $($field)* })
1626    );
1627    (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1628        $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
1629    );
1630
1631    (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1633        $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
1634    );
1635    (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1636        $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)* })
1637    );
1638    (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1639        $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
1640    );
1641    (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1642        $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { %$($k).+ $($field)* })
1643    );
1644    (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1645        $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
1646    );
1647
1648    (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1650        $crate::event!(name: $name, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
1651    );
1652    (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
1653        $crate::event!(name: $name, $crate::Level::DEBUG, { $($k).+ $($field)* })
1654    );
1655    (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
1656        $crate::event!(name: $name, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
1657    );
1658    (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
1659        $crate::event!(name: $name, $crate::Level::DEBUG, { %$($k).+ $($field)* })
1660    );
1661    (name: $name:expr, $($arg:tt)+ ) => (
1662        $crate::event!(name: $name, $crate::Level::DEBUG, {}, $($arg)+)
1663    );
1664
1665    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1667        $crate::event!(target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
1668    );
1669    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
1670        $crate::event!(target: $target, $crate::Level::DEBUG, { $($k).+ $($field)* })
1671    );
1672    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
1673        $crate::event!(target: $target, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
1674    );
1675    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
1676        $crate::event!(target: $target, $crate::Level::DEBUG, { %$($k).+ $($field)* })
1677    );
1678    (target: $target:expr, $($arg:tt)+ ) => (
1679        $crate::event!(target: $target, $crate::Level::DEBUG, {}, $($arg)+)
1680    );
1681
1682    (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
1684        $crate::event!(
1685            target: module_path!(),
1686            parent: $parent,
1687            $crate::Level::DEBUG,
1688            { $($field)+ },
1689            $($arg)+
1690        )
1691    );
1692    (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
1693        $crate::event!(
1694            target: module_path!(),
1695            parent: $parent,
1696            $crate::Level::DEBUG,
1697            { $($k).+ = $($field)*}
1698        )
1699    );
1700    (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
1701        $crate::event!(
1702            target: module_path!(),
1703            parent: $parent,
1704            $crate::Level::DEBUG,
1705            { ?$($k).+ = $($field)*}
1706        )
1707    );
1708    (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
1709        $crate::event!(
1710            target: module_path!(),
1711            parent: $parent,
1712            $crate::Level::DEBUG,
1713            { %$($k).+ = $($field)*}
1714        )
1715    );
1716    (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
1717        $crate::event!(
1718            target: module_path!(),
1719            parent: $parent,
1720            $crate::Level::DEBUG,
1721            { $($k).+, $($field)*}
1722        )
1723    );
1724    (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
1725        $crate::event!(
1726            target: module_path!(),
1727            parent: $parent,
1728            $crate::Level::DEBUG,
1729            { ?$($k).+, $($field)*}
1730        )
1731    );
1732    (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
1733        $crate::event!(
1734            target: module_path!(),
1735            parent: $parent,
1736            $crate::Level::DEBUG,
1737            { %$($k).+, $($field)*}
1738        )
1739    );
1740    (parent: $parent:expr, $($arg:tt)+) => (
1741        $crate::event!(
1742            target: module_path!(),
1743            parent: $parent,
1744            $crate::Level::DEBUG,
1745            {},
1746            $($arg)+
1747        )
1748    );
1749
1750    ({ $($field:tt)+ }, $($arg:tt)+ ) => (
1752        $crate::event!(
1753            target: module_path!(),
1754            $crate::Level::DEBUG,
1755            { $($field)+ },
1756            $($arg)+
1757        )
1758    );
1759    ($($k:ident).+ = $($field:tt)*) => (
1760        $crate::event!(
1761            target: module_path!(),
1762            $crate::Level::DEBUG,
1763            { $($k).+ = $($field)*}
1764        )
1765    );
1766    (?$($k:ident).+ = $($field:tt)*) => (
1767        $crate::event!(
1768            target: module_path!(),
1769            $crate::Level::DEBUG,
1770            { ?$($k).+ = $($field)*}
1771        )
1772    );
1773    (%$($k:ident).+ = $($field:tt)*) => (
1774        $crate::event!(
1775            target: module_path!(),
1776            $crate::Level::DEBUG,
1777            { %$($k).+ = $($field)*}
1778        )
1779    );
1780    ($($k:ident).+, $($field:tt)*) => (
1781        $crate::event!(
1782            target: module_path!(),
1783            $crate::Level::DEBUG,
1784            { $($k).+, $($field)*}
1785        )
1786    );
1787    (?$($k:ident).+, $($field:tt)*) => (
1788        $crate::event!(
1789            target: module_path!(),
1790            $crate::Level::DEBUG,
1791            { ?$($k).+, $($field)*}
1792        )
1793    );
1794    (%$($k:ident).+, $($field:tt)*) => (
1795        $crate::event!(
1796            target: module_path!(),
1797            $crate::Level::DEBUG,
1798            { %$($k).+, $($field)*}
1799        )
1800    );
1801    (?$($k:ident).+) => (
1802        $crate::event!(
1803            target: module_path!(),
1804            $crate::Level::DEBUG,
1805            { ?$($k).+ }
1806        )
1807    );
1808    (%$($k:ident).+) => (
1809        $crate::event!(
1810            target: module_path!(),
1811            $crate::Level::DEBUG,
1812            { %$($k).+ }
1813        )
1814    );
1815    ($($k:ident).+) => (
1816        $crate::event!(
1817            target: module_path!(),
1818            $crate::Level::DEBUG,
1819            { $($k).+ }
1820        )
1821    );
1822    ($($arg:tt)+) => (
1823        $crate::event!(
1824            target: module_path!(),
1825            $crate::Level::DEBUG,
1826            $($arg)+
1827        )
1828    );
1829}
1830
1831#[macro_export]
1866macro_rules! info {
1867    (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1869        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
1870    );
1871    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1872        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)* })
1873    );
1874    (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1875        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { ?$($k).+ $($field)* })
1876    );
1877    (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1878        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { %$($k).+ $($field)* })
1879    );
1880    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1881        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
1882    );
1883
1884    (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1886        $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
1887    );
1888    (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
1889        $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
1890    );
1891    (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
1892        $crate::event!(name: $name, target: $target, $crate::Level::INFO, { ?$($k).+ $($field)* })
1893    );
1894    (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
1895        $crate::event!(name: $name, target: $target, $crate::Level::INFO, { %$($k).+ $($field)* })
1896    );
1897    (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
1898        $crate::event!(name: $name, target: $target, $crate::Level::INFO, {}, $($arg)+)
1899    );
1900
1901    (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1903        $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
1904    );
1905    (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1906        $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)* })
1907    );
1908    (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1909        $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { ?$($k).+ $($field)* })
1910    );
1911    (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1912        $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { %$($k).+ $($field)* })
1913    );
1914    (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1915        $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
1916    );
1917
1918    (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1920        $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
1921    );
1922    (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
1923        $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)* })
1924    );
1925    (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
1926        $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { ?$($k).+ $($field)* })
1927    );
1928    (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
1929        $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { %$($k).+ $($field)* })
1930    );
1931    (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
1932        $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
1933    );
1934
1935    (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1937        $crate::event!(name: $name, $crate::Level::INFO, { $($field)* }, $($arg)*)
1938    );
1939    (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
1940        $crate::event!(name: $name, $crate::Level::INFO, { $($k).+ $($field)* })
1941    );
1942    (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
1943        $crate::event!(name: $name, $crate::Level::INFO, { ?$($k).+ $($field)* })
1944    );
1945    (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
1946        $crate::event!(name: $name, $crate::Level::INFO, { %$($k).+ $($field)* })
1947    );
1948    (name: $name:expr, $($arg:tt)+ ) => (
1949        $crate::event!(name: $name, $crate::Level::INFO, {}, $($arg)+)
1950    );
1951
1952    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
1954        $crate::event!(target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
1955    );
1956    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
1957        $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
1958    );
1959    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
1960        $crate::event!(target: $target, $crate::Level::INFO, { ?$($k).+ $($field)* })
1961    );
1962    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
1963        $crate::event!(target: $target, $crate::Level::INFO, { %$($k).+ $($field)* })
1964    );
1965    (target: $target:expr, $($arg:tt)+ ) => (
1966        $crate::event!(target: $target, $crate::Level::INFO, {}, $($arg)+)
1967    );
1968
1969    (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
1971        $crate::event!(
1972            target: module_path!(),
1973            parent: $parent,
1974            $crate::Level::INFO,
1975            { $($field)+ },
1976            $($arg)+
1977        )
1978    );
1979    (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
1980        $crate::event!(
1981            target: module_path!(),
1982            parent: $parent,
1983            $crate::Level::INFO,
1984            { $($k).+ = $($field)*}
1985        )
1986    );
1987    (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
1988        $crate::event!(
1989            target: module_path!(),
1990            parent: $parent,
1991            $crate::Level::INFO,
1992            { ?$($k).+ = $($field)*}
1993        )
1994    );
1995    (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
1996        $crate::event!(
1997            target: module_path!(),
1998            parent: $parent,
1999            $crate::Level::INFO,
2000            { %$($k).+ = $($field)*}
2001        )
2002    );
2003    (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
2004        $crate::event!(
2005            target: module_path!(),
2006            parent: $parent,
2007            $crate::Level::INFO,
2008            { $($k).+, $($field)*}
2009        )
2010    );
2011    (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
2012        $crate::event!(
2013            target: module_path!(),
2014            parent: $parent,
2015            $crate::Level::INFO,
2016            { ?$($k).+, $($field)*}
2017        )
2018    );
2019    (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
2020        $crate::event!(
2021            target: module_path!(),
2022            parent: $parent,
2023            $crate::Level::INFO,
2024            { %$($k).+, $($field)*}
2025        )
2026    );
2027    (parent: $parent:expr, $($arg:tt)+) => (
2028        $crate::event!(
2029            target: module_path!(),
2030            parent: $parent,
2031            $crate::Level::INFO,
2032            {},
2033            $($arg)+
2034        )
2035    );
2036
2037    ({ $($field:tt)+ }, $($arg:tt)+ ) => (
2039        $crate::event!(
2040            target: module_path!(),
2041            $crate::Level::INFO,
2042            { $($field)+ },
2043            $($arg)+
2044        )
2045    );
2046    ($($k:ident).+ = $($field:tt)*) => (
2047        $crate::event!(
2048            target: module_path!(),
2049            $crate::Level::INFO,
2050            { $($k).+ = $($field)*}
2051        )
2052    );
2053    (?$($k:ident).+ = $($field:tt)*) => (
2054        $crate::event!(
2055            target: module_path!(),
2056            $crate::Level::INFO,
2057            { ?$($k).+ = $($field)*}
2058        )
2059    );
2060    (%$($k:ident).+ = $($field:tt)*) => (
2061        $crate::event!(
2062            target: module_path!(),
2063            $crate::Level::INFO,
2064            { %$($k).+ = $($field)*}
2065        )
2066    );
2067    ($($k:ident).+, $($field:tt)*) => (
2068        $crate::event!(
2069            target: module_path!(),
2070            $crate::Level::INFO,
2071            { $($k).+, $($field)*}
2072        )
2073    );
2074    (?$($k:ident).+, $($field:tt)*) => (
2075        $crate::event!(
2076            target: module_path!(),
2077            $crate::Level::INFO,
2078            { ?$($k).+, $($field)*}
2079        )
2080    );
2081    (%$($k:ident).+, $($field:tt)*) => (
2082        $crate::event!(
2083            target: module_path!(),
2084            $crate::Level::INFO,
2085            { %$($k).+, $($field)*}
2086        )
2087    );
2088    (?$($k:ident).+) => (
2089        $crate::event!(
2090            target: module_path!(),
2091            $crate::Level::INFO,
2092            { ?$($k).+ }
2093        )
2094    );
2095    (%$($k:ident).+) => (
2096        $crate::event!(
2097            target: module_path!(),
2098            $crate::Level::INFO,
2099            { %$($k).+ }
2100        )
2101    );
2102    ($($k:ident).+) => (
2103        $crate::event!(
2104            target: module_path!(),
2105            $crate::Level::INFO,
2106            { $($k).+ }
2107        )
2108    );
2109    ($($arg:tt)+) => (
2110        $crate::event!(
2111            target: module_path!(),
2112            $crate::Level::INFO,
2113            $($arg)+
2114        )
2115    );
2116}
2117
2118#[macro_export]
2146macro_rules! warn {
2147    (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2149        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
2150    );
2151    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
2152        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)* })
2153    );
2154    (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
2155        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { ?$($k).+ $($field)* })
2156    );
2157    (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
2158        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { %$($k).+ $($field)* })
2159    );
2160    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
2161        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
2162    );
2163
2164    (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2166        $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
2167    );
2168    (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
2169        $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)* })
2170    );
2171    (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
2172        $crate::event!(name: $name, target: $target, $crate::Level::WARN, { ?$($k).+ $($field)* })
2173    );
2174    (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
2175        $crate::event!(name: $name, target: $target, $crate::Level::WARN, { %$($k).+ $($field)* })
2176    );
2177    (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
2178        $crate::event!(name: $name, target: $target, $crate::Level::WARN, {}, $($arg)+)
2179    );
2180
2181    (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2183        $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
2184    );
2185    (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
2186        $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)* })
2187    );
2188    (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
2189        $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { ?$($k).+ $($field)* })
2190    );
2191    (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
2192        $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { %$($k).+ $($field)* })
2193    );
2194    (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
2195        $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
2196    );
2197
2198    (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2200        $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
2201    );
2202    (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
2203        $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)* })
2204    );
2205    (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
2206        $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { ?$($k).+ $($field)* })
2207    );
2208    (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
2209        $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { %$($k).+ $($field)* })
2210    );
2211    (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
2212        $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
2213    );
2214
2215    (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2217        $crate::event!(name: $name, $crate::Level::WARN, { $($field)* }, $($arg)*)
2218    );
2219    (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
2220        $crate::event!(name: $name, $crate::Level::WARN, { $($k).+ $($field)* })
2221    );
2222    (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
2223        $crate::event!(name: $name, $crate::Level::WARN, { ?$($k).+ $($field)* })
2224    );
2225    (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
2226        $crate::event!(name: $name, $crate::Level::WARN, { %$($k).+ $($field)* })
2227    );
2228    (name: $name:expr, $($arg:tt)+ ) => (
2229        $crate::event!(name: $name, $crate::Level::WARN, {}, $($arg)+)
2230    );
2231
2232    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2234        $crate::event!(target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
2235    );
2236    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
2237        $crate::event!(target: $target, $crate::Level::WARN, { $($k).+ $($field)* })
2238    );
2239    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
2240        $crate::event!(target: $target, $crate::Level::WARN, { ?$($k).+ $($field)* })
2241    );
2242    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
2243        $crate::event!(target: $target, $crate::Level::WARN, { %$($k).+ $($field)* })
2244    );
2245    (target: $target:expr, $($arg:tt)+ ) => (
2246        $crate::event!(target: $target, $crate::Level::WARN, {}, $($arg)+)
2247    );
2248
2249    (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
2251        $crate::event!(
2252            target: module_path!(),
2253            parent: $parent,
2254            $crate::Level::WARN,
2255            { $($field)+ },
2256            $($arg)+
2257        )
2258    );
2259    (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
2260        $crate::event!(
2261            target: module_path!(),
2262            parent: $parent,
2263            $crate::Level::WARN,
2264            { $($k).+ = $($field)*}
2265        )
2266    );
2267    (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
2268        $crate::event!(
2269            target: module_path!(),
2270            parent: $parent,
2271            $crate::Level::WARN,
2272            { ?$($k).+ = $($field)*}
2273        )
2274    );
2275    (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
2276        $crate::event!(
2277            target: module_path!(),
2278            parent: $parent,
2279            $crate::Level::WARN,
2280            { %$($k).+ = $($field)*}
2281        )
2282    );
2283    (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
2284        $crate::event!(
2285            target: module_path!(),
2286            parent: $parent,
2287            $crate::Level::WARN,
2288            { $($k).+, $($field)*}
2289        )
2290    );
2291    (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
2292        $crate::event!(
2293            target: module_path!(),
2294            parent: $parent,
2295            $crate::Level::WARN,
2296            { ?$($k).+, $($field)*}
2297        )
2298    );
2299    (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
2300        $crate::event!(
2301            target: module_path!(),
2302            parent: $parent,
2303            $crate::Level::WARN,
2304            { %$($k).+, $($field)*}
2305        )
2306    );
2307    (parent: $parent:expr, $($arg:tt)+) => (
2308        $crate::event!(
2309            target: module_path!(),
2310            parent: $parent,
2311            $crate::Level::WARN,
2312            {},
2313            $($arg)+
2314        )
2315    );
2316
2317    ({ $($field:tt)+ }, $($arg:tt)+ ) => (
2319        $crate::event!(
2320            target: module_path!(),
2321            $crate::Level::WARN,
2322            { $($field)+ },
2323            $($arg)+
2324        )
2325    );
2326    ($($k:ident).+ = $($field:tt)*) => (
2327        $crate::event!(
2328            target: module_path!(),
2329            $crate::Level::WARN,
2330            { $($k).+ = $($field)*}
2331        )
2332    );
2333    (?$($k:ident).+ = $($field:tt)*) => (
2334        $crate::event!(
2335            target: module_path!(),
2336            $crate::Level::WARN,
2337            { ?$($k).+ = $($field)*}
2338        )
2339    );
2340    (%$($k:ident).+ = $($field:tt)*) => (
2341        $crate::event!(
2342            target: module_path!(),
2343            $crate::Level::WARN,
2344            { %$($k).+ = $($field)*}
2345        )
2346    );
2347    ($($k:ident).+, $($field:tt)*) => (
2348        $crate::event!(
2349            target: module_path!(),
2350            $crate::Level::WARN,
2351            { $($k).+, $($field)*}
2352        )
2353    );
2354    (?$($k:ident).+, $($field:tt)*) => (
2355        $crate::event!(
2356            target: module_path!(),
2357            $crate::Level::WARN,
2358            { ?$($k).+, $($field)*}
2359        )
2360    );
2361    (%$($k:ident).+, $($field:tt)*) => (
2362        $crate::event!(
2363            target: module_path!(),
2364            $crate::Level::WARN,
2365            { %$($k).+, $($field)*}
2366        )
2367    );
2368    (?$($k:ident).+) => (
2369        $crate::event!(
2370            target: module_path!(),
2371            $crate::Level::WARN,
2372            { ?$($k).+ }
2373        )
2374    );
2375    (%$($k:ident).+) => (
2376        $crate::event!(
2377            target: module_path!(),
2378            $crate::Level::WARN,
2379            { %$($k).+ }
2380        )
2381    );
2382    ($($k:ident).+) => (
2383        $crate::event!(
2384            target: module_path!(),
2385            $crate::Level::WARN,
2386            { $($k).+ }
2387        )
2388    );
2389    ($($arg:tt)+) => (
2390        $crate::event!(
2391            target: module_path!(),
2392            $crate::Level::WARN,
2393            $($arg)+
2394        )
2395    );
2396}
2397
2398#[macro_export]
2422macro_rules! error {
2423    (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2425        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
2426    );
2427    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
2428        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)* })
2429    );
2430    (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
2431        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { ?$($k).+ $($field)* })
2432    );
2433    (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
2434        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { %$($k).+ $($field)* })
2435    );
2436    (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
2437        $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
2438    );
2439
2440    (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2442        $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
2443    );
2444    (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
2445        $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)* })
2446    );
2447    (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
2448        $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { ?$($k).+ $($field)* })
2449    );
2450    (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
2451        $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { %$($k).+ $($field)* })
2452    );
2453    (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
2454        $crate::event!(name: $name, target: $target, $crate::Level::ERROR, {}, $($arg)+)
2455    );
2456
2457    (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2459        $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
2460    );
2461    (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
2462        $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)* })
2463    );
2464    (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
2465        $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { ?$($k).+ $($field)* })
2466    );
2467    (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
2468        $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { %$($k).+ $($field)* })
2469    );
2470    (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
2471        $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
2472    );
2473
2474    (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2476        $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
2477    );
2478    (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)* ) => (
2479        $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)* })
2480    );
2481    (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)* ) => (
2482        $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { ?$($k).+ $($field)* })
2483    );
2484    (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)* ) => (
2485        $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { %$($k).+ $($field)* })
2486    );
2487    (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
2488        $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
2489    );
2490
2491    (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2493        $crate::event!(name: $name, $crate::Level::ERROR, { $($field)* }, $($arg)*)
2494    );
2495    (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
2496        $crate::event!(name: $name, $crate::Level::ERROR, { $($k).+ $($field)* })
2497    );
2498    (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
2499        $crate::event!(name: $name, $crate::Level::ERROR, { ?$($k).+ $($field)* })
2500    );
2501    (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
2502        $crate::event!(name: $name, $crate::Level::ERROR, { %$($k).+ $($field)* })
2503    );
2504    (name: $name:expr, $($arg:tt)+ ) => (
2505        $crate::event!(name: $name, $crate::Level::ERROR, {}, $($arg)+)
2506    );
2507
2508    (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
2510        $crate::event!(target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
2511    );
2512    (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
2513        $crate::event!(target: $target, $crate::Level::ERROR, { $($k).+ $($field)* })
2514    );
2515    (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
2516        $crate::event!(target: $target, $crate::Level::ERROR, { ?$($k).+ $($field)* })
2517    );
2518    (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
2519        $crate::event!(target: $target, $crate::Level::ERROR, { %$($k).+ $($field)* })
2520    );
2521    (target: $target:expr, $($arg:tt)+ ) => (
2522        $crate::event!(target: $target, $crate::Level::ERROR, {}, $($arg)+)
2523    );
2524
2525    (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
2527        $crate::event!(
2528            target: module_path!(),
2529            parent: $parent,
2530            $crate::Level::ERROR,
2531            { $($field)+ },
2532            $($arg)+
2533        )
2534    );
2535    (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
2536        $crate::event!(
2537            target: module_path!(),
2538            parent: $parent,
2539            $crate::Level::ERROR,
2540            { $($k).+ = $($field)*}
2541        )
2542    );
2543    (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
2544        $crate::event!(
2545            target: module_path!(),
2546            parent: $parent,
2547            $crate::Level::ERROR,
2548            { ?$($k).+ = $($field)*}
2549        )
2550    );
2551    (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
2552        $crate::event!(
2553            target: module_path!(),
2554            parent: $parent,
2555            $crate::Level::ERROR,
2556            { %$($k).+ = $($field)*}
2557        )
2558    );
2559    (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
2560        $crate::event!(
2561            target: module_path!(),
2562            parent: $parent,
2563            $crate::Level::ERROR,
2564            { $($k).+, $($field)*}
2565        )
2566    );
2567    (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
2568        $crate::event!(
2569            target: module_path!(),
2570            parent: $parent,
2571            $crate::Level::ERROR,
2572            { ?$($k).+, $($field)*}
2573        )
2574    );
2575    (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
2576        $crate::event!(
2577            target: module_path!(),
2578            parent: $parent,
2579            $crate::Level::ERROR,
2580            { %$($k).+, $($field)*}
2581        )
2582    );
2583    (parent: $parent:expr, $($arg:tt)+) => (
2584        $crate::event!(
2585            target: module_path!(),
2586            parent: $parent,
2587            $crate::Level::ERROR,
2588            {},
2589            $($arg)+
2590        )
2591    );
2592
2593    ({ $($field:tt)+ }, $($arg:tt)+ ) => (
2595        $crate::event!(
2596            target: module_path!(),
2597            $crate::Level::ERROR,
2598            { $($field)+ },
2599            $($arg)+
2600        )
2601    );
2602    ($($k:ident).+ = $($field:tt)*) => (
2603        $crate::event!(
2604            target: module_path!(),
2605            $crate::Level::ERROR,
2606            { $($k).+ = $($field)*}
2607        )
2608    );
2609    (?$($k:ident).+ = $($field:tt)*) => (
2610        $crate::event!(
2611            target: module_path!(),
2612            $crate::Level::ERROR,
2613            { ?$($k).+ = $($field)*}
2614        )
2615    );
2616    (%$($k:ident).+ = $($field:tt)*) => (
2617        $crate::event!(
2618            target: module_path!(),
2619            $crate::Level::ERROR,
2620            { %$($k).+ = $($field)*}
2621        )
2622    );
2623    ($($k:ident).+, $($field:tt)*) => (
2624        $crate::event!(
2625            target: module_path!(),
2626            $crate::Level::ERROR,
2627            { $($k).+, $($field)*}
2628        )
2629    );
2630    (?$($k:ident).+, $($field:tt)*) => (
2631        $crate::event!(
2632            target: module_path!(),
2633            $crate::Level::ERROR,
2634            { ?$($k).+, $($field)*}
2635        )
2636    );
2637    (%$($k:ident).+, $($field:tt)*) => (
2638        $crate::event!(
2639            target: module_path!(),
2640            $crate::Level::ERROR,
2641            { %$($k).+, $($field)*}
2642        )
2643    );
2644    (?$($k:ident).+) => (
2645        $crate::event!(
2646            target: module_path!(),
2647            $crate::Level::ERROR,
2648            { ?$($k).+ }
2649        )
2650    );
2651    (%$($k:ident).+) => (
2652        $crate::event!(
2653            target: module_path!(),
2654            $crate::Level::ERROR,
2655            { %$($k).+ }
2656        )
2657    );
2658    ($($k:ident).+) => (
2659        $crate::event!(
2660            target: module_path!(),
2661            $crate::Level::ERROR,
2662            { $($k).+ }
2663        )
2664    );
2665    ($($arg:tt)+) => (
2666        $crate::event!(
2667            target: module_path!(),
2668            $crate::Level::ERROR,
2669            $($arg)+
2670        )
2671    );
2672}
2673
2674#[doc(hidden)]
2676#[macro_export]
2677macro_rules! callsite {
2678    (name: $name:expr, kind: $kind:expr, fields: $($fields:tt)*) => {{
2679        $crate::callsite! {
2680            name: $name,
2681            kind: $kind,
2682            target: module_path!(),
2683            level: $crate::Level::TRACE,
2684            fields: $($fields)*
2685        }
2686    }};
2687    (
2688        name: $name:expr,
2689        kind: $kind:expr,
2690        level: $lvl:expr,
2691        fields: $($fields:tt)*
2692    ) => {{
2693        $crate::callsite! {
2694            name: $name,
2695            kind: $kind,
2696            target: module_path!(),
2697            level: $lvl,
2698            fields: $($fields)*
2699        }
2700    }};
2701    (
2702        name: $name:expr,
2703        kind: $kind:expr,
2704        target: $target:expr,
2705        level: $lvl:expr,
2706        fields: $($fields:tt)*
2707    ) => {{
2708        static META: $crate::Metadata<'static> = {
2709            $crate::metadata! {
2710                name: $name,
2711                target: $target,
2712                level: $lvl,
2713                fields: $crate::fieldset!( $($fields)* ),
2714                callsite: &__CALLSITE,
2715                kind: $kind,
2716            }
2717        };
2718        static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite::DefaultCallsite::new(&META);
2719        __CALLSITE.register();
2720        &__CALLSITE
2721    }};
2722}
2723
2724#[doc(hidden)]
2726#[macro_export]
2727macro_rules! callsite2 {
2728    (name: $name:expr, kind: $kind:expr, fields: $($fields:tt)*) => {{
2729        $crate::callsite2! {
2730            name: $name,
2731            kind: $kind,
2732            target: module_path!(),
2733            level: $crate::Level::TRACE,
2734            fields: $($fields)*
2735        }
2736    }};
2737    (
2738        name: $name:expr,
2739        kind: $kind:expr,
2740        level: $lvl:expr,
2741        fields: $($fields:tt)*
2742    ) => {{
2743        $crate::callsite2! {
2744            name: $name,
2745            kind: $kind,
2746            target: module_path!(),
2747            level: $lvl,
2748            fields: $($fields)*
2749        }
2750    }};
2751    (
2752        name: $name:expr,
2753        kind: $kind:expr,
2754        target: $target:expr,
2755        level: $lvl:expr,
2756        fields: $($fields:tt)*
2757    ) => {{
2758        static META: $crate::Metadata<'static> = {
2759            $crate::metadata! {
2760                name: $name,
2761                target: $target,
2762                level: $lvl,
2763                fields: $crate::fieldset!( $($fields)* ),
2764                callsite: &__CALLSITE,
2765                kind: $kind,
2766            }
2767        };
2768        $crate::callsite::DefaultCallsite::new(&META)
2769    }};
2770}
2771
2772#[macro_export]
2773#[doc(hidden)]
2775macro_rules! level_enabled {
2776    ($lvl:expr) => {
2777        $lvl <= $crate::level_filters::STATIC_MAX_LEVEL
2778            && $lvl <= $crate::level_filters::LevelFilter::current()
2779    };
2780}
2781
2782#[doc(hidden)]
2783#[macro_export]
2784macro_rules! valueset {
2785
2786    (@ { $(,)* $($val:expr),* $(,)* }, $next:expr $(,)*) => {
2788        &[ $($val),* ]
2789    };
2790
2791    (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr, $($rest:tt)*) => {
2799        $crate::valueset!(
2800            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$val) as &dyn Value)) },
2801            $next,
2802            $($rest)*
2803        )
2804    };
2805    (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr, $($rest:tt)*) => {
2806        $crate::valueset!(
2807            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$val) as &dyn Value)) },
2808            $next,
2809            $($rest)*
2810        )
2811    };
2812    (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr, $($rest:tt)*) => {
2813        $crate::valueset!(
2814            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$val as &dyn Value)) },
2815            $next,
2816            $($rest)*
2817        )
2818    };
2819    (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+, $($rest:tt)*) => {
2820        $crate::valueset!(
2821            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$($k).+ as &dyn Value)) },
2822            $next,
2823            $($rest)*
2824        )
2825    };
2826    (@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+, $($rest:tt)*) => {
2827        $crate::valueset!(
2828            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$($k).+) as &dyn Value)) },
2829            $next,
2830            $($rest)*
2831        )
2832    };
2833    (@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+, $($rest:tt)*) => {
2834        $crate::valueset!(
2835            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$($k).+) as &dyn Value)) },
2836            $next,
2837            $($rest)*
2838        )
2839    };
2840    (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr) => {
2841        $crate::valueset!(
2842            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$val) as &dyn Value)) },
2843            $next,
2844        )
2845    };
2846    (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr) => {
2847        $crate::valueset!(
2848            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$val) as &dyn Value)) },
2849            $next,
2850        )
2851    };
2852    (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr) => {
2853        $crate::valueset!(
2854            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$val as &dyn Value)) },
2855            $next,
2856        )
2857    };
2858    (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+) => {
2859        $crate::valueset!(
2860            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$($k).+ as &dyn Value)) },
2861            $next,
2862        )
2863    };
2864    (@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+) => {
2865        $crate::valueset!(
2866            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$($k).+) as &dyn Value)) },
2867            $next,
2868        )
2869    };
2870    (@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+) => {
2871        $crate::valueset!(
2872            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$($k).+) as &dyn Value)) },
2873            $next,
2874        )
2875    };
2876
2877    (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr, $($rest:tt)*) => {
2879        $crate::valueset!(
2880            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$val) as &dyn Value)) },
2881            $next,
2882            $($rest)*
2883        )
2884    };
2885    (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr, $($rest:tt)*) => {
2886        $crate::valueset!(
2887            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$val) as &dyn Value)) },
2888            $next,
2889            $($rest)*
2890        )
2891    };
2892    (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr, $($rest:tt)*) => {
2893        $crate::valueset!(
2894            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$val as &dyn Value)) },
2895            $next,
2896            $($rest)*
2897        )
2898    };
2899    (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr) => {
2900        $crate::valueset!(
2901            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&debug(&$val) as &dyn Value)) },
2902            $next,
2903        )
2904    };
2905    (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr) => {
2906        $crate::valueset!(
2907            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&display(&$val) as &dyn Value)) },
2908            $next,
2909        )
2910    };
2911    (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr) => {
2912        $crate::valueset!(
2913            @ { $($out),*, (&$next, $crate::__macro_support::Option::Some(&$val as &dyn Value)) },
2914            $next,
2915        )
2916    };
2917
2918    (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = ?$val:expr, $($rest:tt)*) => {
2920        $crate::valueset!(
2921            @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
2922            $next,
2923            $($rest)*
2924        )
2925    };
2926    (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = %$val:expr, $($rest:tt)*) => {
2927        $crate::valueset!(
2928            @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
2929            $next,
2930            $($rest)*
2931        )
2932    };
2933    (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = $val:expr, $($rest:tt)*) => {
2934        $crate::valueset!(
2935            @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
2936            $next,
2937            $($rest)*
2938        )
2939    };
2940    (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = ?$val:expr) => {
2941        $crate::valueset!(
2942            @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
2943            $next,
2944        )
2945    };
2946    (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = %$val:expr) => {
2947        $crate::valueset!(
2948            @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
2949            $next,
2950        )
2951    };
2952    (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = $val:expr) => {
2953        $crate::valueset!(
2954            @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
2955            $next,
2956        )
2957    };
2958
2959    (@ { $(,)* $($out:expr),* }, $next:expr, $($rest:tt)+) => {
2961        $crate::valueset!(@ { (&$next, $crate::__macro_support::Option::Some(&$crate::__macro_support::format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
2962    };
2963
2964    ($fields:expr, $($kvs:tt)+) => {
2966        {
2967            #[allow(unused_imports)]
2968            use $crate::field::{debug, display, Value};
2969            let mut iter = $fields.iter();
2970            $fields.value_set($crate::valueset!(
2971                @ { },
2972                $crate::__macro_support::Iterator::next(&mut iter).expect("FieldSet corrupted (this is a bug)"),
2973                $($kvs)+
2974            ))
2975        }
2976    };
2977    ($fields:expr,) => {
2978        {
2979            $fields.value_set(&[])
2980        }
2981    };
2982}
2983
2984#[doc(hidden)]
2985#[macro_export]
2986macro_rules! fieldset {
2987    (@ { $(,)* $($out:expr),* $(,)* } $(,)*) => {
2989        &[ $($out),* ]
2990    };
2991
2992    (@ { $(,)* $($out:expr),* } $($k:ident).+ = ?$val:expr, $($rest:tt)*) => {
2994        $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
2995    };
2996    (@ { $(,)* $($out:expr),* } $($k:ident).+ = %$val:expr, $($rest:tt)*) => {
2997        $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
2998    };
2999    (@ { $(,)* $($out:expr),* } $($k:ident).+ = $val:expr, $($rest:tt)*) => {
3000        $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
3001    };
3002    (@ { $(,)* $($out:expr),* } ?$($k:ident).+, $($rest:tt)*) => {
3008        $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
3009    };
3010    (@ { $(,)* $($out:expr),* } %$($k:ident).+, $($rest:tt)*) => {
3011        $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
3012    };
3013    (@ { $(,)* $($out:expr),* } $($k:ident).+, $($rest:tt)*) => {
3014        $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
3015    };
3016
3017    (@ { $(,)* $($out:expr),* } $k:literal = ?$val:expr, $($rest:tt)*) => {
3019        $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
3020    };
3021    (@ { $(,)* $($out:expr),* } $k:literal = %$val:expr, $($rest:tt)*) => {
3022        $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
3023    };
3024    (@ { $(,)* $($out:expr),* } $k:literal = $val:expr, $($rest:tt)*) => {
3025        $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
3026    };
3027
3028    (@ { $(,)* $($out:expr),* } { $k:expr } = ?$val:expr, $($rest:tt)*) => {
3030        $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
3031    };
3032    (@ { $(,)* $($out:expr),* } { $k:expr } = %$val:expr, $($rest:tt)*) => {
3033        $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
3034    };
3035    (@ { $(,)* $($out:expr),* } { $k:expr } = $val:expr, $($rest:tt)*) => {
3036        $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
3037    };
3038
3039    (@ { $(,)* $($out:expr),* } $($rest:tt)+) => {
3041        $crate::fieldset!(@ { "message", $($out),*, })
3042    };
3043
3044    ($($args:tt)*) => {
3046        $crate::fieldset!(@ { } $($args)*,)
3047    };
3048
3049}
3050
3051#[cfg(feature = "log")]
3052#[doc(hidden)]
3053#[macro_export]
3054macro_rules! level_to_log {
3055    ($level:expr) => {
3056        match $level {
3057            $crate::Level::ERROR => $crate::log::Level::Error,
3058            $crate::Level::WARN => $crate::log::Level::Warn,
3059            $crate::Level::INFO => $crate::log::Level::Info,
3060            $crate::Level::DEBUG => $crate::log::Level::Debug,
3061            _ => $crate::log::Level::Trace,
3062        }
3063    };
3064}
3065
3066#[doc(hidden)]
3067#[macro_export]
3068macro_rules! __tracing_stringify {
3069    ($($t:tt)*) => {
3070        stringify!($($t)*)
3071    };
3072}
3073
3074#[cfg(not(feature = "log"))]
3075#[doc(hidden)]
3076#[macro_export]
3077macro_rules! __tracing_log {
3078    ($level:expr, $callsite:expr, $value_set:expr) => {};
3079}
3080
3081#[cfg(feature = "log")]
3082#[doc(hidden)]
3083#[macro_export]
3084macro_rules! __tracing_log {
3085    ($level:expr, $callsite:expr, $value_set:expr) => {
3086        $crate::if_log_enabled! { $level, {
3087            use $crate::log;
3088            let level = $crate::level_to_log!($level);
3089            if level <= log::max_level() {
3090                let meta = $callsite.metadata();
3091                let log_meta = log::Metadata::builder()
3092                    .level(level)
3093                    .target(meta.target())
3094                    .build();
3095                let logger = log::logger();
3096                if logger.enabled(&log_meta) {
3097                    $crate::__macro_support::__tracing_log(meta, logger, log_meta, $value_set)
3098                }
3099            }
3100        }}
3101    };
3102}
3103
3104#[cfg(not(feature = "log"))]
3105#[doc(hidden)]
3106#[macro_export]
3107macro_rules! if_log_enabled {
3108    ($lvl:expr, $e:expr;) => {
3109        $crate::if_log_enabled! { $lvl, $e }
3110    };
3111    ($lvl:expr, $if_log:block) => {
3112        $crate::if_log_enabled! { $lvl, $if_log else {} }
3113    };
3114    ($lvl:expr, $if_log:block else $else_block:block) => {
3115        $else_block
3116    };
3117}
3118
3119#[cfg(all(feature = "log", not(feature = "log-always")))]
3120#[doc(hidden)]
3121#[macro_export]
3122macro_rules! if_log_enabled {
3123    ($lvl:expr, $e:expr;) => {
3124        $crate::if_log_enabled! { $lvl, $e }
3125    };
3126    ($lvl:expr, $if_log:block) => {
3127        $crate::if_log_enabled! { $lvl, $if_log else {} }
3128    };
3129    ($lvl:expr, $if_log:block else $else_block:block) => {
3130        if $crate::level_to_log!($lvl) <= $crate::log::STATIC_MAX_LEVEL {
3131            if !$crate::dispatcher::has_been_set() {
3132                $if_log
3133            } else {
3134                $else_block
3135            }
3136        } else {
3137            $else_block
3138        }
3139    };
3140}
3141
3142#[cfg(all(feature = "log", feature = "log-always"))]
3143#[doc(hidden)]
3144#[macro_export]
3145macro_rules! if_log_enabled {
3146    ($lvl:expr, $e:expr;) => {
3147        $crate::if_log_enabled! { $lvl, $e }
3148    };
3149    ($lvl:expr, $if_log:block) => {
3150        $crate::if_log_enabled! { $lvl, $if_log else {} }
3151    };
3152    ($lvl:expr, $if_log:block else $else_block:block) => {
3153        if $crate::level_to_log!($lvl) <= $crate::log::STATIC_MAX_LEVEL {
3154            #[allow(unused_braces)]
3155            $if_log
3156        } else {
3157            $else_block
3158        }
3159    };
3160}