1 #![cfg(feature = "env-filter")]
3 use tracing
::{self, subscriber::with_default, Level}
;
5 use tracing_subscriber
::{filter::EnvFilter, prelude::*}
;
8 #[cfg_attr(not(flaky_tests), ignore)]
9 fn field_filter_events() {
10 let filter
: EnvFilter
= "[{thing}]=debug".parse().expect("filter should parse");
11 let (subscriber
, finished
) = subscriber
::mock()
14 .at_level(Level
::INFO
)
15 .with_fields(field
::mock("thing")),
19 .at_level(Level
::DEBUG
)
20 .with_fields(field
::mock("thing")),
24 let subscriber
= subscriber
.with(filter
);
26 with_default(subscriber
, || {
27 tracing
::trace
!(disabled
= true);
28 tracing
::info
!("also disabled");
29 tracing
::info
!(thing
= 1);
30 tracing
::debug
!(thing
= 2);
31 tracing
::trace
!(thing
= 3);
34 finished
.assert_finished();
38 #[cfg_attr(not(flaky_tests), ignore)]
39 fn field_filter_spans() {
40 let filter
: EnvFilter
= "[{enabled=true}]=debug"
42 .expect("filter should parse");
43 let (subscriber
, finished
) = subscriber
::mock()
44 .enter(span
::mock().named("span1"))
47 .at_level(Level
::INFO
)
48 .with_fields(field
::mock("something")),
50 .exit(span
::mock().named("span1"))
51 .enter(span
::mock().named("span2"))
52 .exit(span
::mock().named("span2"))
53 .enter(span
::mock().named("span3"))
56 .at_level(Level
::DEBUG
)
57 .with_fields(field
::mock("something")),
59 .exit(span
::mock().named("span3"))
62 let subscriber
= subscriber
.with(filter
);
64 with_default(subscriber
, || {
65 tracing
::trace
!("disabled");
66 tracing
::info
!("also disabled");
67 tracing
::info_span
!("span1", enabled
= true).in_scope(|| {
68 tracing
::info
!(something
= 1);
70 tracing
::debug_span
!("span2", enabled
= false, foo
= "hi").in_scope(|| {
71 tracing
::warn
!(something
= 2);
73 tracing
::trace_span
!("span3", enabled
= true, answer
= 42).in_scope(|| {
74 tracing
::debug
!(something
= 2);
78 finished
.assert_finished();
82 fn record_after_created() {
83 let filter
: EnvFilter
= "[{enabled=true}]=debug"
85 .expect("filter should parse");
86 let (subscriber
, finished
) = subscriber
::mock()
87 .enter(span
::mock().named("span"))
88 .exit(span
::mock().named("span"))
90 span
::mock().named("span"),
91 field
::mock("enabled").with_value(&true),
93 .enter(span
::mock().named("span"))
94 .event(event
::mock().at_level(Level
::DEBUG
))
95 .exit(span
::mock().named("span"))
98 let subscriber
= subscriber
.with(filter
);
100 with_default(subscriber
, || {
101 let span
= tracing
::info_span
!("span", enabled
= false);
103 tracing
::debug
!("i'm disabled!");
106 span
.record("enabled", &true);
108 tracing
::debug
!("i'm enabled!");
111 tracing
::debug
!("i'm also disabled");
114 finished
.assert_finished();