Skip to content

Commit cd12dae

Browse files
TimoFreiberghawkw
andauthored
subscriber: add example for reloading a global filtering layer (#1971)
Missing example was noticed in #1959 (comment) Should the descriptions of the examples distinguish global filtering and per-layer filtering a bit more explicitly? Co-authored-by: Eliza Weisman <eliza@buoyant.io>
1 parent b37d0d3 commit cd12dae

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

tracing-subscriber/src/reload.rs

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,45 @@
1111
//!
1212
//! # Examples
1313
//!
14-
//! Reloading a [`Filtered`](crate::filter::Filtered) layer to change the filter at runtime.
14+
//! Reloading a [global filtering](crate::layer#global-filtering) layer:
1515
//!
16+
//! ```rust
17+
//! # use tracing::info;
18+
//! use tracing_subscriber::{filter, fmt, reload, prelude::*};
19+
//! let filter = filter::LevelFilter::WARN;
20+
//! let (filter, reload_handle) = reload::Layer::new(filter);
21+
//! tracing_subscriber::registry()
22+
//! .with(filter)
23+
//! .with(fmt::Layer::default())
24+
//! .init();
25+
//! #
26+
//! # // specifying the Registry type is required
27+
//! # let _: &reload::Handle<filter::LevelFilter, tracing_subscriber::Registry> = &reload_handle;
28+
//! #
29+
//! info!("This will be ignored");
30+
//! reload_handle.modify(|filter| *filter = filter::LevelFilter::INFO);
31+
//! info!("This will be logged");
1632
//! ```
33+
//!
34+
//! Reloading a [`Filtered`](crate::filter::Filtered) layer:
35+
//!
36+
//! ```rust
1737
//! # use tracing::info;
18-
//! # use tracing_subscriber::{filter,fmt,reload,Registry,prelude::*};
19-
//! # fn main() {
38+
//! use tracing_subscriber::{filter, fmt, reload, prelude::*};
2039
//! let filtered_layer = fmt::Layer::default().with_filter(filter::LevelFilter::WARN);
2140
//! let (filtered_layer, reload_handle) = reload::Layer::new(filtered_layer);
2241
//! #
2342
//! # // specifying the Registry type is required
24-
//! # let _: &reload::Handle<filter::Filtered<fmt::Layer<Registry>,
25-
//! # filter::LevelFilter, Registry>,Registry>
43+
//! # let _: &reload::Handle<filter::Filtered<fmt::Layer<tracing_subscriber::Registry>,
44+
//! # filter::LevelFilter, tracing_subscriber::Registry>,tracing_subscriber::Registry>
2645
//! # = &reload_handle;
2746
//! #
47+
//! tracing_subscriber::registry()
48+
//! .with(filtered_layer)
49+
//! .init();
2850
//! info!("This will be ignored");
2951
//! reload_handle.modify(|layer| *layer.filter_mut() = filter::LevelFilter::INFO);
3052
//! info!("This will be logged");
31-
//! # }
3253
//! ```
3354
//!
3455
//! [`Layer` type]: struct.Layer.html

0 commit comments

Comments
 (0)