summaryrefslogtreecommitdiffstats
path: root/vendor/tracing-subscriber/tests/layer_filters/combinators.rs
blob: 6052a2d00cda4bbaafa5f126a4bebb13c17cc6a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use super::*;
use tracing_subscriber::{
    filter::{filter_fn, FilterExt, LevelFilter},
    prelude::*,
};

#[test]
fn and() {
    let (layer, handle) = layer::mock()
        .event(
            event::msg("a very interesting event")
                .at_level(tracing::Level::INFO)
                .with_target("interesting_target"),
        )
        .done()
        .run_with_handle();

    // Enables spans and events with targets starting with `interesting_target`:
    let target_filter = filter::filter_fn(|meta| meta.target().starts_with("interesting_target"));

    // Enables spans and events with levels `INFO` and below:
    let level_filter = LevelFilter::INFO;

    // Combine the two filters together, returning a filter that only enables
    // spans and events that *both* filters will enable:
    let filter = target_filter.and(level_filter);

    let _subscriber = tracing_subscriber::registry()
        .with(layer.with_filter(filter))
        .set_default();

    // This event will *not* be enabled:
    tracing::info!("an event with an uninteresting target");

    // This event *will* be enabled:
    tracing::info!(target: "interesting_target", "a very interesting event");

    // This event will *not* be enabled:
    tracing::debug!(target: "interesting_target", "interesting debug event...");

    handle.assert_finished();
}