-
Notifications
You must be signed in to change notification settings - Fork 819
Open
Description
Bug Report
Version
Built from main e4df761
Platform
Linux zen 6.15.5-arch1-1
Crates
tracing-subscriber
Description
When Reload
is used, tracing::enabled!()
returns a false positive (true
when the log is not actually enabled).
Reproducer:
#![deny(rust_2018_idioms)]
use std::env;
use std::str::FromStr;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
use tracing_subscriber::{filter, reload, Layer};
#[path = "fmt/yak_shave.rs"]
mod yak_shave;
fn default_filter() -> filter::Targets {
let var: String = env::var("RUST_LOG")
.map_err(|_| ())
.unwrap_or("info".to_string());
filter::Targets::from_str(&var).expect("static filter should build")
}
fn main() {
use tracing_subscriber::{fmt, EnvFilter};
let (layer, reload) = reload::Layer::new(
Box::new(tracing_subscriber::fmt::layer()).with_filter(default_filter()),
);
tracing_subscriber::registry()
.with(layer)
//.with(tracing_subscriber::fmt::layer().with_filter(default_filter()))
.init();
let enabled = tracing::enabled!(target: "request", tracing::Level::INFO);
let enabled_warn = tracing::enabled!(target: "request", tracing::Level::WARN);
// let enabled_warn = false;
println!("enabled={enabled} warn={enabled_warn}");
let number_of_yaks = 3;
tracing::info!(target: "request", "log at info level");
let number_shaved = yak_shave::shave_all(number_of_yaks);
tracing::warn!(
target: "request",
message = "log at warn level",
all_yaks_shaved = number_shaved == number_of_yaks,
);
}
Here we see info is marked as "enabled"; the log will NOT be logged
$ RUST_LOG=request=warn,info cargo run --example subscriber-filter
enabled=true warn=true
Here it is properly handled:
$ RUST_LOG=request=warn cargo run --example subscriber-filter
enabled=false warn=true
thomaseizinger
Metadata
Metadata
Assignees
Labels
No labels