subscriber: rename Filter to EnvFilter (#339)

This branch renames `Filter` to `EnvFilter` and deprecates the previous
name, as suggested in https://github.com/tokio-rs/tracing/pull/336#pullrequestreview-286356811.
This should make the difference between an `EnvFilter` and a
`LevelFilter` clearer.
The `filter` feature has also been deprecated in favor of `env-filter`.

Co-Authored-By: Benjamin Saunders <ben.e.saunders@gmail.com>
Signed-off-by: Eliza Weisman <eliza@buoyant.io>
This commit is contained in:
Eliza Weisman
2019-09-12 12:44:40 -07:00
committed by GitHub
parent 5c0fe77fd7
commit fec24bfcf1
19 changed files with 146 additions and 101 deletions

View File

@@ -29,7 +29,7 @@ fn fibonacci_seq(to: u64) -> Vec<u64> {
fn main() {
use tracing_subscriber::fmt;
let subscriber = fmt::Subscriber::builder()
.with_filter("attrs_args=trace")
.with_env_filter("attrs_args=trace")
.finish();
tracing::subscriber::with_default(subscriber, || {

View File

@@ -12,7 +12,7 @@ fn suggest_band() -> String {
fn main() {
let subscriber = tracing_subscriber::fmt::Subscriber::builder()
.with_filter("attrs_basic=trace")
.with_env_filter("attrs_basic=trace")
.finish();
tracing::subscriber::with_default(subscriber, || {
let num_recs = 1;

View File

@@ -17,10 +17,10 @@ use tokio::net::{TcpListener, TcpStream};
use tokio::prelude::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
use tracing_subscriber::{fmt, Filter};
use tracing_subscriber::{fmt, EnvFilter};
let subscriber = fmt::Subscriber::builder()
.with_filter(Filter::from_default_env())
.with_env_filter(EnvFilter::from_default_env())
.finish();
tracing::subscriber::set_global_default(subscriber)?;

View File

@@ -3,10 +3,10 @@
mod yak_shave;
fn main() {
use tracing_subscriber::{fmt, Filter};
use tracing_subscriber::{fmt, EnvFilter};
let subscriber = fmt::Subscriber::builder()
.with_filter(Filter::from_default_env())
.with_env_filter(EnvFilter::from_default_env())
.finish();
tracing::subscriber::with_default(subscriber, || {

View File

@@ -18,14 +18,14 @@ use tracing_tower::InstrumentableService;
pub struct Conn(SocketAddr);
fn main() {
use tracing_subscriber::filter::Filter;
use tracing_subscriber::filter::EnvFilter;
// Set the default subscriber to record all traces emitted by this example
// and by the `tracing_tower` library's helpers.
let filter = Filter::from_default_env()
let filter = EnvFilter::from_default_env()
.add_directive("tower_h2_client=trace".parse().unwrap())
.add_directive("tracing_tower=trace".parse().unwrap());
let subscriber = tracing_subscriber::FmtSubscriber::builder()
.with_filter(filter)
.with_env_filter(filter)
.finish();
let _ = tracing::subscriber::set_global_default(subscriber);

View File

@@ -95,12 +95,12 @@ impl tower_service::Service<()> for NewSvc {
fn main() {
// Set the default subscriber to record all traces emitted by this example
// and by the `tracing_tower` library's helpers.
use tracing_subscriber::filter::Filter;
let filter = Filter::from_default_env()
use tracing_subscriber::filter::EnvFilter;
let filter = EnvFilter::from_default_env()
.add_directive("tower_h2_server=trace".parse().unwrap())
.add_directive("tracing_tower=trace".parse().unwrap());
let subscriber = tracing_subscriber::FmtSubscriber::builder()
.with_filter(filter)
.with_env_filter(filter)
.finish();
let _ = tracing::subscriber::set_global_default(subscriber);

View File

@@ -36,7 +36,7 @@ use tracing_subscriber::FmtSubscriber;
fn main() {
let builder = FmtSubscriber::builder()
.with_filter("info,tower_load=debug")
.with_env_filter("info,tower_load=debug")
.with_filter_reloading();
let handle = builder.reload_handle();
@@ -224,7 +224,7 @@ impl Service<()> for MakeSvc {
}
struct AdminSvc<S> {
handle: tracing_subscriber::reload::Handle<tracing_subscriber::filter::Filter, S>,
handle: tracing_subscriber::reload::Handle<tracing_subscriber::filter::EnvFilter, S>,
}
impl<S> Clone for AdminSvc<S> {
@@ -296,7 +296,7 @@ where
let body = str::from_utf8(&bytes.as_ref()).map_err(|e| format!("{}", e))?;
tracing::trace!(request.body = ?body);
let new_filter = body
.parse::<tracing_subscriber::filter::Filter>()
.parse::<tracing_subscriber::filter::EnvFilter>()
.map_err(|e| format!("{}", e))?;
self.handle.reload(new_filter).map_err(|e| format!("{}", e))
}

View File

@@ -44,7 +44,7 @@ pub async fn main() -> Result<(), Box<dyn Error>> {
let addr = "127.0.0.1:6142".parse()?;
let subscriber = tracing_subscriber::fmt::Subscriber::builder()
.with_filter("async_fn=trace")
.with_env_filter("async_fn=trace")
.finish();
tracing::subscriber::set_global_default(subscriber).unwrap();

View File

@@ -37,10 +37,10 @@ use tracing_futures::Instrument;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
use tracing_subscriber::{Filter, FmtSubscriber};
use tracing_subscriber::{EnvFilter, FmtSubscriber};
let subscriber = FmtSubscriber::builder()
.with_filter(Filter::from_default_env().add_directive("echo=trace".parse()?))
.with_env_filter(EnvFilter::from_default_env().add_directive("echo=trace".parse()?))
.finish();
tracing::subscriber::set_global_default(subscriber)?;

View File

@@ -86,10 +86,10 @@ async fn transfer(
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use tracing_subscriber::{Filter, FmtSubscriber};
use tracing_subscriber::{EnvFilter, FmtSubscriber};
let subscriber = FmtSubscriber::builder()
.with_filter(Filter::from_default_env().add_directive("proxy_server=trace".parse()?))
.with_env_filter(EnvFilter::from_default_env().add_directive("proxy_server=trace".parse()?))
.finish();
tracing::subscriber::set_global_default(subscriber)?;

View File

@@ -1,6 +1,6 @@
[package]
name = "tracing-subscriber"
version = "0.1.1"
version = "0.1.2"
authors = ["Eliza Weisman <eliza@buoyant.io>", "Tokio Contributors <team@tokio.rs>"]
edition = "2018"
license = "MIT"
@@ -20,11 +20,14 @@ keywords = ["logging", "tracing", "metrics", "subscriber"]
[features]
default = ["filter", "smallvec", "fmt", "ansi", "chrono", "tracing-log"]
filter = ["matchers", "regex", "lazy_static"]
default = ["env-filter", "smallvec", "fmt", "ansi", "chrono", "tracing-log"]
env-filter = ["matchers", "regex", "lazy_static"]
fmt = ["owning_ref", "parking_lot"]
ansi = ["fmt", "ansi_term"]
# Alias for `env-filter`; renamed in version 0.1.2, and will be removed in 0.2.
filter = ["env-filter"]
[dependencies]
tracing-core = "0.1.2"
crossbeam-utils = "0.6"

View File

@@ -29,8 +29,15 @@ use tracing_core::{
/// A `Layer` which filters spans and events based on a set of filter
/// directives.
// TODO(eliza): document filter directive syntax?
#[cfg_attr(
feature = "filter",
deprecated(
since = "0.1.2",
note = "the `filter` feature flag was renamed to `env-filter` and will be removed in 0.2",
)
)]
#[derive(Debug)]
pub struct Filter {
pub struct EnvFilter {
// TODO: eventually, this should be exposed by the registry.
scope: thread::Local<Vec<LevelFilter>>,
@@ -48,7 +55,7 @@ type FilterVec<T> = smallvec::SmallVec<[T; 8]>;
#[cfg(not(feature = "smallvec"))]
type FilterVec<T> = Vec<T>;
/// Indicates that an error occurred while parsing a `Filter` from an
/// Indicates that an error occurred while parsing a `EnvFilter` from an
/// environment variable.
#[derive(Debug)]
pub struct FromEnvError {
@@ -61,27 +68,27 @@ enum ErrorKind {
Env(env::VarError),
}
impl Filter {
/// The default environment variable used by [`Filter::from_default_env`]
/// and [`Filter::try_from_default_env`].
impl EnvFilter {
/// The default environment variable used by [`EnvFilter::from_default_env`]
/// and [`EnvFilter::try_from_default_env`].
///
/// [`Filter::from_default_env`]: #method.from_default_env
/// [`Filter::try_from_default_env`]: #method.try_from_default_env
/// [`EnvFilter::from_default_env`]: #method.from_default_env
/// [`EnvFilter::try_from_default_env`]: #method.try_from_default_env
pub const DEFAULT_ENV: &'static str = "RUST_LOG";
/// Returns a new `Filter` from the value of the `RUST_LOG` environment
/// Returns a new `EnvFilter` from the value of the `RUST_LOG` environment
/// variable, ignoring any invalid filter directives.
pub fn from_default_env() -> Self {
Self::from_env(Self::DEFAULT_ENV)
}
/// Returns a new `Filter` from the value of the given environment
/// Returns a new `EnvFilter` from the value of the given environment
/// variable, ignoring any invalid filter directives.
pub fn from_env<A: AsRef<str>>(env: A) -> Self {
env::var(env.as_ref()).map(Self::new).unwrap_or_default()
}
/// Returns a new `Filter` from the directives in the given string,
/// Returns a new `EnvFilter` from the directives in the given string,
/// ignoring any that are invalid.
pub fn new<S: AsRef<str>>(dirs: S) -> Self {
let directives = dirs.as_ref().split(',').filter_map(|s| match s.parse() {
@@ -94,7 +101,7 @@ impl Filter {
Self::from_directives(directives)
}
/// Returns a new `Filter` from the directives in the given string,
/// Returns a new `EnvFilter` from the directives in the given string,
/// or an error if any are invalid.
pub fn try_new<S: AsRef<str>>(dirs: S) -> Result<Self, ParseError> {
let directives = dirs
@@ -105,21 +112,21 @@ impl Filter {
Ok(Self::from_directives(directives))
}
/// Returns a new `Filter` from the value of the `RUST_LOG` environment
/// Returns a new `EnvFilter` from the value of the `RUST_LOG` environment
/// variable, or an error if the environment variable contains any invalid
/// filter directives.
pub fn try_from_default_env() -> Result<Self, FromEnvError> {
Self::try_from_env(Self::DEFAULT_ENV)
}
/// Returns a new `Filter` from the value of the given environment
/// Returns a new `EnvFilter` from the value of the given environment
/// variable, or an error if the environment variable is unset or contains
/// any invalid filter directives.
pub fn try_from_env<A: AsRef<str>>(env: A) -> Result<Self, FromEnvError> {
env::var(env.as_ref())?.parse().map_err(Into::into)
}
/// Add a filtering directive to this `Filter`.
/// Add a filtering directive to this `EnvFilter`.
///
/// The added directive will be used in addition to any previously set
/// directives, either added using this method or provided when the filter
@@ -137,17 +144,17 @@ impl Filter {
///
/// # Examples
/// ```rust
/// use tracing_subscriber::filter::{Filter, LevelFilter};
/// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
/// # fn main() {
/// let mut filter = Filter::from_default_env()
/// let mut filter = EnvFilter::from_default_env()
/// .add_directive(LevelFilter::INFO.into());
/// # }
/// ```
/// ```rust
/// use tracing_subscriber::filter::{Filter, Directive};
/// use tracing_subscriber::filter::{EnvFilter, Directive};
///
/// # fn try_mk_filter() -> Result<(), Box<dyn ::std::error::Error>> {
/// let mut filter = Filter::try_from_default_env()?
/// let mut filter = EnvFilter::try_from_default_env()?
/// .add_directive("my_crate::module=trace".parse()?)
/// .add_directive("my_crate::my_other_module::something=info".parse()?);
/// # Ok(())
@@ -193,7 +200,7 @@ impl Filter {
}
}
impl<S: Subscriber> Layer<S> for Filter {
impl<S: Subscriber> Layer<S> for EnvFilter {
fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest {
if metadata.is_span() {
// If this metadata describes a span, first, check if there is a
@@ -271,7 +278,7 @@ impl<S: Subscriber> Layer<S> for Filter {
}
}
impl FromStr for Filter {
impl FromStr for EnvFilter {
type Err = ParseError;
fn from_str(spec: &str) -> Result<Self, Self::Err> {
@@ -279,7 +286,7 @@ impl FromStr for Filter {
}
}
impl<S> From<S> for Filter
impl<S> From<S> for EnvFilter
where
S: AsRef<str>,
{
@@ -288,13 +295,13 @@ where
}
}
impl Default for Filter {
impl Default for EnvFilter {
fn default() -> Self {
Self::from_directives(std::iter::empty())
}
}
impl fmt::Display for Filter {
impl fmt::Display for EnvFilter {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut statics = self.statics.iter();
let wrote_statics = if let Some(next) = statics.next() {
@@ -401,7 +408,7 @@ mod tests {
#[test]
fn callsite_enabled_no_span_directive() {
let filter = Filter::new("app=debug").with_subscriber(NoSubscriber);
let filter = EnvFilter::new("app=debug").with_subscriber(NoSubscriber);
static META: &'static Metadata<'static> = &Metadata::new(
"mySpan",
"app",
@@ -419,7 +426,7 @@ mod tests {
#[test]
fn callsite_off() {
let filter = Filter::new("app=off").with_subscriber(NoSubscriber);
let filter = EnvFilter::new("app=off").with_subscriber(NoSubscriber);
static META: &'static Metadata<'static> = &Metadata::new(
"mySpan",
"app",
@@ -437,7 +444,7 @@ mod tests {
#[test]
fn callsite_enabled_includes_span_directive() {
let filter = Filter::new("app[mySpan]=debug").with_subscriber(NoSubscriber);
let filter = EnvFilter::new("app[mySpan]=debug").with_subscriber(NoSubscriber);
static META: &'static Metadata<'static> = &Metadata::new(
"mySpan",
"app",
@@ -456,7 +463,7 @@ mod tests {
#[test]
fn callsite_enabled_includes_span_directive_field() {
let filter =
Filter::new("app[mySpan{field=\"value\"}]=debug").with_subscriber(NoSubscriber);
EnvFilter::new("app[mySpan{field=\"value\"}]=debug").with_subscriber(NoSubscriber);
static META: &'static Metadata<'static> = &Metadata::new(
"mySpan",
"app",
@@ -474,7 +481,7 @@ mod tests {
#[test]
fn callsite_enabled_includes_span_directive_multiple_fields() {
let filter = Filter::new("app[mySpan{field=\"value\",field2=2}]=debug")
let filter = EnvFilter::new("app[mySpan{field=\"value\",field2=2}]=debug")
.with_subscriber(NoSubscriber);
static META: &'static Metadata<'static> = &Metadata::new(
"mySpan",
@@ -493,11 +500,11 @@ mod tests {
#[test]
fn roundtrip() {
let f1: Filter =
let f1: EnvFilter =
"[span1{foo=1}]=error,[span2{bar=2 baz=false}],crate2[{quux=\"quuux\"}]=debug"
.parse()
.unwrap();
let f2: Filter = format!("{}", f1).parse().unwrap();
let f2: EnvFilter = format!("{}", f1).parse().unwrap();
assert_eq!(f1.statics, f2.statics);
assert_eq!(f1.dynamics, f2.dynamics);
}

View File

@@ -2,11 +2,19 @@
//! subscriber.
//!
//! [`Layer`]: ../trait.Layer.html
#[cfg(feature = "filter")]
#[cfg(feature = "env-filter")]
mod env;
mod level;
pub use self::level::{LevelFilter, ParseError as LevelParseError};
#[cfg(feature = "filter")]
#[cfg(feature = "env-filter")]
pub use self::env::*;
/// A `Layer` which filters spans and events based on a set of filter
/// directives.
///
/// **Note**: renamed to `EnvFilter` in 0.1.2; use that instead.
#[cfg(feature = "env-filter")]
#[deprecated(since = "0.1.2", note = "renamed to `EnvFilter`")]
pub type Filter = EnvFilter;

View File

@@ -383,8 +383,8 @@ where
}
}
#[cfg(feature = "filter")]
impl<N, E, W> Builder<N, E, crate::Filter, W>
#[cfg(feature = "env-filter")]
impl<N, E, W> Builder<N, E, crate::EnvFilter, W>
where
Formatter<N, E, W>: tracing_core::Subscriber + 'static,
{
@@ -392,7 +392,7 @@ where
/// runtime.
pub fn with_filter_reloading(
self,
) -> Builder<N, E, crate::reload::Layer<crate::Filter, Formatter<N, E, W>>, W> {
) -> Builder<N, E, crate::reload::Layer<crate::EnvFilter, Formatter<N, E, W>>, W> {
let (filter, _) = crate::reload::Layer::new(self.filter);
Builder {
new_visitor: self.new_visitor,
@@ -404,14 +404,14 @@ where
}
}
#[cfg(feature = "filter")]
impl<N, E, W> Builder<N, E, crate::reload::Layer<crate::Filter, Formatter<N, E, W>>, W>
#[cfg(feature = "env-filter")]
impl<N, E, W> Builder<N, E, crate::reload::Layer<crate::EnvFilter, Formatter<N, E, W>>, W>
where
Formatter<N, E, W>: tracing_core::Subscriber + 'static,
{
/// Returns a `Handle` that may be used to reload the constructed subscriber's
/// filter.
pub fn reload_handle(&self) -> crate::reload::Handle<crate::Filter, Formatter<N, E, W>> {
pub fn reload_handle(&self) -> crate::reload::Handle<crate::EnvFilter, Formatter<N, E, W>> {
self.filter.handle()
}
}
@@ -432,10 +432,10 @@ impl<N, E, F, W> Builder<N, E, F, W> {
}
}
/// Sets the [`Filter`] that the subscriber will use to determine if
/// Sets the [`EnvFilter`] that the subscriber will use to determine if
/// a span or event is enabled.
///
/// Note that this method requires the "filter" feature flag to be enabled.
/// Note that this method requires the "env-filter" feature flag to be enabled.
///
/// If a filter was previously set, or a maximum level was set by the
/// [`with_max_level`] method, that value is replaced by the new filter.
@@ -445,10 +445,10 @@ impl<N, E, F, W> Builder<N, E, F, W> {
/// Setting a filter based on the value of the `RUST_LOG` environment
/// variable:
/// ```rust
/// use tracing_subscriber::{FmtSubscriber, Filter};
/// use tracing_subscriber::{FmtSubscriber, EnvFilter};
///
/// let subscriber = FmtSubscriber::builder()
/// .with_filter(Filter::from_default_env())
/// .with_env_filter(EnvFilter::from_default_env())
/// .finish();
/// ```
///
@@ -458,7 +458,7 @@ impl<N, E, F, W> Builder<N, E, F, W> {
///
/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
/// let subscriber = FmtSubscriber::builder()
/// .with_filter("my_crate=info,my_crate::my_mod=debug,[my_span]=trace")
/// .with_env_filter("my_crate=info,my_crate::my_mod=debug,[my_span]=trace")
/// .finish();
/// # Ok(()) }
/// ```
@@ -467,11 +467,11 @@ impl<N, E, F, W> Builder<N, E, F, W> {
/// ```rust
/// use tracing_subscriber::{
/// FmtSubscriber,
/// filter::{Filter, LevelFilter},
/// filter::{EnvFilter, LevelFilter},
/// };
///
/// # fn filter() -> Result<(), Box<dyn std::error::Error>> {
/// let filter = Filter::try_from_env("MY_CUSTOM_FILTER_ENV_VAR")?
/// let filter = EnvFilter::try_from_env("MY_CUSTOM_FILTER_ENV_VAR")?
/// // Set the base level when not matched by other directives to WARN.
/// .add_directive(LevelFilter::WARN.into())
/// // Set the max level for `my_crate::my_mod` to DEBUG, overriding
@@ -479,14 +479,17 @@ impl<N, E, F, W> Builder<N, E, F, W> {
/// .add_directive("my_crate::my_mod=debug".parse()?);
///
/// let subscriber = FmtSubscriber::builder()
/// .with_filter(filter)
/// .with_env_filter(filter)
/// .finish();
/// # Ok(())}
/// ```
/// [`Filter`]: ../filter/struct.Filter.html
/// [`EnvFilter`]: ../filter/struct.EnvFilter.html
/// [`with_max_level`]: #method.with_max_level
#[cfg(feature = "filter")]
pub fn with_filter(self, filter: impl Into<crate::Filter>) -> Builder<N, E, crate::Filter, W>
#[cfg(feature = "env-filter")]
pub fn with_env_filter(
self,
filter: impl Into<crate::EnvFilter>,
) -> Builder<N, E, crate::EnvFilter, W>
where
Formatter<N, E, W>: tracing_core::Subscriber + 'static,
{
@@ -500,10 +503,31 @@ impl<N, E, F, W> Builder<N, E, F, W> {
}
}
/// Sets the [`EnvFilter`] that the subscriber will use to determine if
/// a span or event is enabled.
///
/// **Note**: this method was renamed to [`with_env_filter`] in version
/// 0.1.2. This method just wraps a call to `with_env_filter`, and will be
/// removed in version 0.2.
///
/// [`EnvFilter`]: ../filter/struct.EnvFilter.html
/// [`with_env_filter`]: #method.with_env_filter
#[cfg(feature = "env-filter")]
#[deprecated(since = "0.1.2", note = "renamed to `with_env_filter`")]
pub fn with_filter(
self,
filter: impl Into<crate::EnvFilter>,
) -> Builder<N, E, crate::EnvFilter, W>
where
Formatter<N, E, W>: tracing_core::Subscriber + 'static,
{
self.with_env_filter(filter)
}
/// Sets the maximum [verbosity level] that will be enabled by the
/// subscriber.
///
/// If the max level has already been set, or a [`Filter`] was added by
/// If the max level has already been set, or a [`EnvFilter`] was added by
/// [`with_filter`], this replaces that configuration with the new
/// maximum level.
///
@@ -530,7 +554,7 @@ impl<N, E, F, W> Builder<N, E, F, W> {
/// .finish();
/// ```
/// [verbosity level]: https://docs.rs/tracing-core/0.1.5/tracing_core/struct.Level.html
/// [`Filter`]: ../filter/struct.Filter.html
/// [`EnvFilter`]: ../filter/struct.EnvFilter.html
/// [`with_filter`]: #method.with_filter
pub fn with_max_level(self, filter: impl Into<LevelFilter>) -> Builder<N, E, LevelFilter, W> {
let filter = filter.into();

View File

@@ -12,8 +12,10 @@
//!
//! ## Feature Flags
//!
//! - `filter`: Enables the [`Filter`] type, which implements filtering similar
//! to the [`env_logger` crate]. Enabled by default.
//! - `env-filter`: Enables the [`EnvFilter`] type, which implements filtering
//! similar to the [`env_logger` crate]. Enabled by default.
//! - `filter`: Alias for `env-filter`. This feature flag was renamed in version
//! 0.1.2, and will be removed in version 0.2.
//! - `fmt`: Enables the [`fmt`] module, which provides a subscriber
//! implementation for printing formatted representations of trace events.
//! Enabled by default.
@@ -25,12 +27,12 @@
//! macros in the `fmt` subscriber. On by default.
//! - [`chrono`]: Enables human-readable time formatting in the `fmt` subscriber.
//! Enabled by default.
//! - [`smallvec`]: Causes the `Filter` type to use the `smallvec` crate (rather
//! - [`smallvec`]: Causes the `EnvFilter` type to use the `smallvec` crate (rather
//! than `Vec`) as a performance optimization. Enabled by default.
//!
//! [`tracing`]: https://docs.rs/tracing/latest/tracing/
//! [`Subscriber`]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/trait.Subscriber.html
//! [`Filter`]: filter/struct.Filter.html
//! [`EnvFilter`]: filter/struct.EnvFilter.html
//! [`fmt`]: fmt/index.html
//! [`tracing-log`]: https://crates.io/crates/tracing-log
//! [`smallvec`]: https://crates.io/crates/smallvec
@@ -96,8 +98,10 @@ pub mod prelude;
pub mod reload;
pub(crate) mod thread;
#[cfg(feature = "filter")]
pub use filter::Filter;
#[cfg(feature = "env-filter")]
#[allow(deprecated)]
pub use filter::{EnvFilter, Filter};
pub use layer::Layer;
#[cfg(feature = "fmt")]
@@ -144,6 +148,5 @@ impl Default for CurrentSpan {
}
mod sealed {
pub trait Sealed<A = ()> {}
}

View File

@@ -248,19 +248,19 @@ mod test {
static FILTER1_CALLS: AtomicUsize = AtomicUsize::new(0);
static FILTER2_CALLS: AtomicUsize = AtomicUsize::new(0);
enum Filter {
enum EnvFilter {
One,
Two,
}
impl<S: Subscriber> crate::Layer<S> for Filter {
impl<S: Subscriber> crate::Layer<S> for EnvFilter {
fn register_callsite(&self, _: &Metadata<'_>) -> Interest {
Interest::sometimes()
}
fn enabled(&self, _: &Metadata<'_>, _: layer::Context<'_, S>) -> bool {
match self {
Filter::One => FILTER1_CALLS.fetch_add(1, Ordering::Relaxed),
Filter::Two => FILTER2_CALLS.fetch_add(1, Ordering::Relaxed),
EnvFilter::One => FILTER1_CALLS.fetch_add(1, Ordering::Relaxed),
EnvFilter::Two => FILTER2_CALLS.fetch_add(1, Ordering::Relaxed),
};
true
}
@@ -269,7 +269,7 @@ mod test {
tracing::trace!("my event");
}
let (layer, handle) = Layer::new(Filter::One);
let (layer, handle) = Layer::new(EnvFilter::One);
let subscriber =
tracing_core::dispatcher::Dispatch::new(crate::layer::tests::NopSubscriber.with(layer));
@@ -283,7 +283,7 @@ mod test {
assert_eq!(FILTER1_CALLS.load(Ordering::Relaxed), 1);
assert_eq!(FILTER2_CALLS.load(Ordering::Relaxed), 0);
handle.reload(Filter::Two).expect("should reload");
handle.reload(EnvFilter::Two).expect("should reload");
event();

View File

@@ -1,11 +1,11 @@
mod support;
use self::support::*;
use tracing::{self, subscriber::with_default, Level};
use tracing_subscriber::{filter::Filter, prelude::*};
use tracing_subscriber::{filter::EnvFilter, prelude::*};
#[test]
fn field_filter_events() {
let filter: Filter = "[{thing}]=debug".parse().expect("filter should parse");
let filter: EnvFilter = "[{thing}]=debug".parse().expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
.event(
event::mock()
@@ -34,7 +34,7 @@ fn field_filter_events() {
#[test]
fn field_filter_spans() {
let filter: Filter = "[{enabled=true}]=debug"
let filter: EnvFilter = "[{enabled=true}]=debug"
.parse()
.expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
@@ -77,7 +77,7 @@ fn field_filter_spans() {
#[test]
fn record_after_created() {
let filter: Filter = "[{enabled=true}]=debug"
let filter: EnvFilter = "[{enabled=true}]=debug"
.parse()
.expect("filter should parse");
let (subscriber, finished) = subscriber::mock()

View File

@@ -1,11 +1,11 @@
mod support;
use self::support::*;
use tracing::{self, subscriber::with_default, Level};
use tracing_subscriber::{filter::Filter, prelude::*};
use tracing_subscriber::{filter::EnvFilter, prelude::*};
#[test]
fn level_filter_event() {
let filter: Filter = "info".parse().expect("filter should parse");
let filter: EnvFilter = "info".parse().expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
.event(event::mock().at_level(Level::INFO))
.event(event::mock().at_level(Level::WARN))
@@ -27,7 +27,7 @@ fn level_filter_event() {
#[test]
fn same_name_spans() {
let filter: Filter = "[foo{bar}]=trace,[foo{baz}]=trace"
let filter: EnvFilter = "[foo{bar}]=trace,[foo{baz}]=trace"
.parse()
.expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
@@ -56,7 +56,7 @@ fn same_name_spans() {
#[test]
fn level_filter_event_with_target() {
let filter: Filter = "info,stuff=debug".parse().expect("filter should parse");
let filter: EnvFilter = "info,stuff=debug".parse().expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
.event(event::mock().at_level(Level::INFO))
.event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
@@ -83,7 +83,7 @@ fn level_filter_event_with_target() {
#[test]
fn span_name_filter_is_dynamic() {
let filter: Filter = "info,[cool_span]=debug"
let filter: EnvFilter = "info,[cool_span]=debug"
.parse()
.expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
@@ -129,7 +129,7 @@ fn span_name_filter_is_dynamic() {
#[test]
fn field_filter_events() {
let filter: Filter = "[{thing}]=debug".parse().expect("filter should parse");
let filter: EnvFilter = "[{thing}]=debug".parse().expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
.event(
event::mock()

View File

@@ -4,11 +4,11 @@
mod support;
use self::support::*;
use tracing::{self, subscriber::with_default, Level};
use tracing_subscriber::{filter::Filter, prelude::*};
use tracing_subscriber::{filter::EnvFilter, prelude::*};
#[test]
fn same_length_targets() {
let filter: Filter = "foo=trace,bar=trace".parse().expect("filter should parse");
let filter: EnvFilter = "foo=trace,bar=trace".parse().expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
.event(event::mock().at_level(Level::TRACE))
.event(event::mock().at_level(Level::TRACE))
@@ -26,7 +26,7 @@ fn same_length_targets() {
#[test]
fn same_num_fields_event() {
let filter: Filter = "[{foo}]=trace,[{bar}]=trace"
let filter: EnvFilter = "[{foo}]=trace,[{bar}]=trace"
.parse()
.expect("filter should parse");
let (subscriber, finished) = subscriber::mock()
@@ -53,7 +53,7 @@ fn same_num_fields_event() {
#[test]
fn same_num_fields_and_name_len() {
let filter: Filter = "[foo{bar=1}]=trace,[baz{boz=1}]=trace"
let filter: EnvFilter = "[foo{bar=1}]=trace,[baz{boz=1}]=trace"
.parse()
.expect("filter should parse");
let (subscriber, finished) = subscriber::mock()