From 2da6cc515c0c081fbe05fbbadffb5cd8eb65d60d Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Thu, 16 Dec 2021 20:52:54 +0900 Subject: [PATCH 1/6] subscriber: use INFO as the default log level in EnvFilter The previous implementation would fall back to "NOTHING" instead, which was a poor default. Close #735 --- tracing-subscriber/src/filter/env/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tracing-subscriber/src/filter/env/mod.rs b/tracing-subscriber/src/filter/env/mod.rs index 81fe0e62de..4badd57357 100644 --- a/tracing-subscriber/src/filter/env/mod.rs +++ b/tracing-subscriber/src/filter/env/mod.rs @@ -250,7 +250,9 @@ impl EnvFilter { use tracing::level_filters::STATIC_MAX_LEVEL; use tracing::Level; - let directives: Vec<_> = directives.into_iter().collect(); + let fallback_level = Directive::from(crate::fmt::Subscriber::DEFAULT_MAX_LEVEL); + + let directives: Vec<_> = std::iter::once(fallback_level).chain(directives.into_iter()).collect(); let disabled: Vec<_> = directives .iter() From e61ebff82c34a4687e5939815e1c26316a0e0af5 Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Wed, 29 Dec 2021 15:26:37 +0900 Subject: [PATCH 2/6] subscriber: Use `Targets` for the default subscriber if `env-filter` is not enabled Close #1697 --- tracing-subscriber/src/fmt/mod.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tracing-subscriber/src/fmt/mod.rs b/tracing-subscriber/src/fmt/mod.rs index 514075e9dc..89c180e2a5 100644 --- a/tracing-subscriber/src/fmt/mod.rs +++ b/tracing-subscriber/src/fmt/mod.rs @@ -297,6 +297,8 @@ //! https://docs.rs/tracing/latest/tracing/trait.Subscriber.html //! [`tracing`]: https://crates.io/crates/tracing //! [`fmt::format`]: mod@crate::fmt::format +#[cfg(not(feature = "env-filter"))] +use core::str::FromStr; use std::{any::TypeId, error::Error, io}; use tracing_core::{span, subscriber::Interest, Event, Metadata}; @@ -316,6 +318,7 @@ use crate::{ layer, registry::{LookupSpan, Registry}, }; +use crate::util::SubscriberInitExt; #[doc(inline)] pub use self::{ @@ -1131,7 +1134,22 @@ pub fn try_init() -> Result<(), Box> { #[cfg(feature = "env-filter")] let builder = builder.with_env_filter(crate::EnvFilter::from_default_env()); - builder.try_init() + let subscriber = builder.finish(); + #[cfg(not(feature = "env-filter"))] + let targets = match std::env::var("RUST_LOG") { + Ok(var) => { + crate::filter::Targets::from_str(&var).map_err(|e|{eprintln!("Ignoring `RUST_LOG`: {:?}", e);}).unwrap_or_default() + } + Err(std::env::VarError::NotPresent) => {crate::filter::Targets::new()} + Err(e) => { + eprintln!("Ignoring `RUST_LOG`: {:?}", e); + crate::filter::Targets::new() + } + }.with_default(crate::fmt::Subscriber::DEFAULT_MAX_LEVEL); + #[cfg(not(feature = "env-filter"))] + let subscriber = subscriber.with(targets); + + subscriber.try_init().map_err(Into::into) } /// Install a global tracing subscriber that listens for events and From e6ea46c191afc1de2ad6970a012444255f743935 Mon Sep 17 00:00:00 2001 From: Eliza Weisman Date: Wed, 29 Dec 2021 11:20:01 -0800 Subject: [PATCH 3/6] Update tracing-subscriber/src/fmt/mod.rs --- tracing-subscriber/src/fmt/mod.rs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/tracing-subscriber/src/fmt/mod.rs b/tracing-subscriber/src/fmt/mod.rs index 89c180e2a5..5ec2574d7d 100644 --- a/tracing-subscriber/src/fmt/mod.rs +++ b/tracing-subscriber/src/fmt/mod.rs @@ -1136,18 +1136,19 @@ pub fn try_init() -> Result<(), Box> { let subscriber = builder.finish(); #[cfg(not(feature = "env-filter"))] - let targets = match std::env::var("RUST_LOG") { - Ok(var) => { - crate::filter::Targets::from_str(&var).map_err(|e|{eprintln!("Ignoring `RUST_LOG`: {:?}", e);}).unwrap_or_default() - } - Err(std::env::VarError::NotPresent) => {crate::filter::Targets::new()} - Err(e) => { - eprintln!("Ignoring `RUST_LOG`: {:?}", e); - crate::filter::Targets::new() - } - }.with_default(crate::fmt::Subscriber::DEFAULT_MAX_LEVEL); - #[cfg(not(feature = "env-filter"))] - let subscriber = subscriber.with(targets); + let subscriber = { + use std::{env, str::FromStr}; + use crate::{filter::Targets, fmt::Subscriber::DEFAULT_MAX_LEVEL}; + let targets = match env::var("RUST_LOG") { + Ok(var) => Targets::from_str(&var).map_err(|e|{eprintln!("Ignoring `RUST_LOG={:?}`: {}", var, e);}).unwrap_or_default(), + Err(env::VarError::NotPresent) => Targets::new().with_default(DEFAULT_MAX_LEVEL), + Err(e) => { + eprintln!("Ignoring `RUST_LOG`: {}", e); + crate::filter::Targets::new().with_default(DEFAULT_MAX_LEVEL) + }, + }; + subscriber.with(targets) + }; subscriber.try_init().map_err(Into::into) } From cbae80fdb142a0b15550021ecf9fc41c7dbcf693 Mon Sep 17 00:00:00 2001 From: Eliza Weisman Date: Wed, 29 Dec 2021 14:22:56 -0800 Subject: [PATCH 4/6] fixup Signed-off-by: Eliza Weisman --- tracing-subscriber/src/fmt/mod.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/tracing-subscriber/src/fmt/mod.rs b/tracing-subscriber/src/fmt/mod.rs index 5ec2574d7d..df4421c5c0 100644 --- a/tracing-subscriber/src/fmt/mod.rs +++ b/tracing-subscriber/src/fmt/mod.rs @@ -297,8 +297,6 @@ //! https://docs.rs/tracing/latest/tracing/trait.Subscriber.html //! [`tracing`]: https://crates.io/crates/tracing //! [`fmt::format`]: mod@crate::fmt::format -#[cfg(not(feature = "env-filter"))] -use core::str::FromStr; use std::{any::TypeId, error::Error, io}; use tracing_core::{span, subscriber::Interest, Event, Metadata}; @@ -313,12 +311,12 @@ pub mod writer; pub use fmt_layer::{FmtContext, FormattedFields, Layer}; use crate::layer::Layer as _; +use crate::util::SubscriberInitExt; use crate::{ filter::LevelFilter, layer, registry::{LookupSpan, Registry}, }; -use crate::util::SubscriberInitExt; #[doc(inline)] pub use self::{ @@ -1137,15 +1135,21 @@ pub fn try_init() -> Result<(), Box> { let subscriber = builder.finish(); #[cfg(not(feature = "env-filter"))] let subscriber = { + use crate::{filter::Targets, layer::SubscriberExt}; use std::{env, str::FromStr}; - use crate::{filter::Targets, fmt::Subscriber::DEFAULT_MAX_LEVEL}; let targets = match env::var("RUST_LOG") { - Ok(var) => Targets::from_str(&var).map_err(|e|{eprintln!("Ignoring `RUST_LOG={:?}`: {}", var, e);}).unwrap_or_default(), - Err(env::VarError::NotPresent) => Targets::new().with_default(DEFAULT_MAX_LEVEL), + Ok(var) => Targets::from_str(&var) + .map_err(|e| { + eprintln!("Ignoring `RUST_LOG={:?}`: {}", var, e); + }) + .unwrap_or_default(), + Err(env::VarError::NotPresent) => { + Targets::new().with_default(Subscriber::DEFAULT_MAX_LEVEL) + } Err(e) => { eprintln!("Ignoring `RUST_LOG`: {}", e); - crate::filter::Targets::new().with_default(DEFAULT_MAX_LEVEL) - }, + Targets::new().with_default(Subscriber::DEFAULT_MAX_LEVEL) + } }; subscriber.with(targets) }; From 7a494bb5ac17721f72dcdffe73e2aa544a833226 Mon Sep 17 00:00:00 2001 From: Eliza Weisman Date: Wed, 29 Dec 2021 14:24:50 -0800 Subject: [PATCH 5/6] remove subscriber builder max level filtering Signed-off-by: Eliza Weisman --- tracing-subscriber/src/fmt/mod.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tracing-subscriber/src/fmt/mod.rs b/tracing-subscriber/src/fmt/mod.rs index df4421c5c0..195443ee59 100644 --- a/tracing-subscriber/src/fmt/mod.rs +++ b/tracing-subscriber/src/fmt/mod.rs @@ -1132,6 +1132,14 @@ pub fn try_init() -> Result<(), Box> { #[cfg(feature = "env-filter")] let builder = builder.with_env_filter(crate::EnvFilter::from_default_env()); + // If `env-filter` is disabled, remove the default max level filter from the + // subscriber; it will be added to the `Targets` filter instead if no filter + // is set in `RUST_LOG`. + // Replacing the default `LevelFilter` with an `EnvFilter` would imply this, + // but we can't replace the builder's filter with a `Targets` filter yet. + #[cfg(not(feature = "env-filter"))] + let builder = builder.with_max_level(LevelFilter::TRACE); + let subscriber = builder.finish(); #[cfg(not(feature = "env-filter"))] let subscriber = { From 52c2a4b47677a5e0fbbc0c21b4ff39872abf3f15 Mon Sep 17 00:00:00 2001 From: Eliza Weisman Date: Wed, 29 Dec 2021 14:43:23 -0800 Subject: [PATCH 6/6] Update tracing-subscriber/src/filter/env/mod.rs --- tracing-subscriber/src/filter/env/mod.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tracing-subscriber/src/filter/env/mod.rs b/tracing-subscriber/src/filter/env/mod.rs index 4badd57357..81fe0e62de 100644 --- a/tracing-subscriber/src/filter/env/mod.rs +++ b/tracing-subscriber/src/filter/env/mod.rs @@ -250,9 +250,7 @@ impl EnvFilter { use tracing::level_filters::STATIC_MAX_LEVEL; use tracing::Level; - let fallback_level = Directive::from(crate::fmt::Subscriber::DEFAULT_MAX_LEVEL); - - let directives: Vec<_> = std::iter::once(fallback_level).chain(directives.into_iter()).collect(); + let directives: Vec<_> = directives.into_iter().collect(); let disabled: Vec<_> = directives .iter()