• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use super::*;
2 use tracing_subscriber::{
3     filter::{filter_fn, FilterExt, LevelFilter},
4     prelude::*,
5 };
6 
7 #[test]
and()8 fn 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