@@ -6,8 +6,91 @@ mod testing;
66#[ cfg( feature = "testing" ) ]
77pub use testing:: { init_for_tests, init_for_tests_with_level} ;
88
9- pub use layer:: { register_event_sink, unregister_event_sink, SimpleEventLayer } ;
10- pub use tracing:: { debug, error, info, trace, warn} ;
9+ pub use layer:: { register_event_sink, simple_event_layer, unregister_event_sink} ;
10+ // Re-export tracing so that our dependencies can use it.
11+ pub use tracing;
12+
13+ // Define standard logging macros.
14+ //
15+ // These all add `tracing_support = true`, which we use as an event filter in our layer.
16+ // This will statically disable the layer for events from outside crates that use tracing.
17+ // This way we don't pay a performance penalty for those events.
18+ // See `SimpleEventFilter` for details.
19+
20+ #[ macro_export]
21+ macro_rules! trace {
22+ ( target: $target: expr, $( $tt: tt) * ) => {
23+ $crate:: tracing:: trace!(
24+ target: $target,
25+ tracing_support = true ,
26+ $( $tt) * )
27+ } ;
28+ ( $( $tt: tt) * ) => {
29+ $crate:: tracing:: trace!(
30+ tracing_support = true ,
31+ $( $tt) * )
32+ } ;
33+ }
34+
35+ #[ macro_export]
36+ macro_rules! debug {
37+ ( target: $target: expr, $( $tt: tt) * ) => {
38+ $crate:: tracing:: debug!(
39+ target: $target,
40+ tracing_support = true ,
41+ $( $tt) * )
42+ } ;
43+ ( $( $tt: tt) * ) => {
44+ $crate:: tracing:: debug!(
45+ tracing_support = true ,
46+ $( $tt) * )
47+ } ;
48+ }
49+
50+ #[ macro_export]
51+ macro_rules! info {
52+ ( target: $target: expr, $( $tt: tt) * ) => {
53+ $crate:: tracing:: info!(
54+ target: $target,
55+ tracing_support = true ,
56+ $( $tt) * )
57+ } ;
58+ ( $( $tt: tt) * ) => {
59+ $crate:: tracing:: info!(
60+ tracing_support = true ,
61+ $( $tt) * )
62+ } ;
63+ }
64+
65+ #[ macro_export]
66+ macro_rules! warn {
67+ ( target: $target: expr, $( $tt: tt) * ) => {
68+ $crate:: tracing:: warn!(
69+ target: $target,
70+ tracing_support = true ,
71+ $( $tt) * )
72+ } ;
73+ ( $( $tt: tt) * ) => {
74+ $crate:: tracing:: warn!(
75+ tracing_support = true ,
76+ $( $tt) * )
77+ } ;
78+ }
79+
80+ #[ macro_export]
81+ macro_rules! error {
82+ ( target: $target: expr, $( $tt: tt) * ) => {
83+ $crate:: tracing:: error!(
84+ target: $target,
85+ tracing_support = true ,
86+ $( $tt) * )
87+ } ;
88+ ( $( $tt: tt) * ) => {
89+ $crate:: tracing:: error!(
90+ tracing_support = true ,
91+ $( $tt) * )
92+ } ;
93+ }
1194
1295// grr - swift has name collision with `Level`? Can uniifi help make this cleaner?
1396pub type Level = TracingLevel ;
@@ -97,7 +180,7 @@ mod tests {
97180 fn test_app ( ) {
98181 use tracing_subscriber:: prelude:: * ;
99182 tracing_subscriber:: registry ( )
100- . with ( layer:: SimpleEventLayer )
183+ . with ( layer:: simple_event_layer ( ) )
101184 . init ( ) ;
102185
103186 struct Sink {
@@ -120,15 +203,24 @@ mod tests {
120203 let sink = Arc :: new ( Sink :: new ( ) ) ;
121204
122205 crate :: layer:: register_event_sink ( "first_target" , Level :: Info , sink. clone ( ) ) ;
123- crate :: layer:: register_event_sink ( "second_target" , Level :: Info , sink. clone ( ) ) ;
206+ crate :: layer:: register_event_sink ( "second_target" , Level :: Debug , sink. clone ( ) ) ;
124207
125- tracing:: event!( target: "first_target" , tracing:: Level :: INFO , extra = -1 , "event message" ) ;
208+ info ! ( target: "first_target" , extra=-1 , "event message" ) ;
209+ debug ! ( target: "first_target" , extra=-2 , "event message (should be filtered)" ) ;
210+ debug ! ( target: "second_target" , extra=-3 , "event message2" ) ;
211+ info ! ( target: "third_target" , extra=-4 , "event message (should be filtered)" ) ;
126212
127- assert_eq ! ( sink. events. read( ) . len( ) , 1 ) ;
213+ assert_eq ! ( sink. events. read( ) . len( ) , 2 ) ;
128214 let event = & sink. events . read ( ) [ 0 ] ;
129215 assert_eq ! ( event. target, "first_target" ) ;
130216 assert_eq ! ( event. level, Level :: Info ) ;
131217 assert_eq ! ( event. message, "event message" ) ;
132218 assert_eq ! ( event. fields. get( "extra" ) . unwrap( ) . as_i64( ) , Some ( -1 ) ) ;
219+
220+ let event2 = & sink. events . read ( ) [ 1 ] ;
221+ assert_eq ! ( event2. target, "second_target" ) ;
222+ assert_eq ! ( event2. level, Level :: Debug ) ;
223+ assert_eq ! ( event2. message, "event message2" ) ;
224+ assert_eq ! ( event2. fields. get( "extra" ) . unwrap( ) . as_i64( ) , Some ( -3 ) ) ;
133225 }
134226}
0 commit comments