1 use super::*; 2 use tracing_subscriber::{ 3 filter::{filter_fn, FilterExt, LevelFilter}, 4 prelude::*, 5 }; 6 7 #[test] and()8fn and() { 9 let (layer, handle) = layer::mock() 10 .event( 11 event::msg("a very interesting event") 12 .at_level(tracing::Level::INFO) 13 .with_target("interesting_target"), 14 ) 15 .only() 16 .run_with_handle(); 17 18 // Enables spans and events with targets starting with `interesting_target`: 19 let target_filter = filter::filter_fn(|meta| meta.target().starts_with("interesting_target")); 20 21 // Enables spans and events with levels `INFO` and below: 22 let level_filter = LevelFilter::INFO; 23 24 // Combine the two filters together, returning a filter that only enables 25 // spans and events that *both* filters will enable: 26 let filter = target_filter.and(level_filter); 27 28 let _subscriber = tracing_subscriber::registry() 29 .with(layer.with_filter(filter)) 30 .set_default(); 31 32 // This event will *not* be enabled: 33 tracing::info!("an event with an uninteresting target"); 34 35 // This event *will* be enabled: 36 tracing::info!(target: "interesting_target", "a very interesting event"); 37 38 // This event will *not* be enabled: 39 tracing::debug!(target: "interesting_target", "interesting debug event..."); 40 41 handle.assert_finished(); 42 } 43