mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 21:41:12 +00:00
Set max log level when changing the log directives via RPC (#8721)
Before this pr changing the log directives would not change the max log level. This means that if the node was started with `info` logging and some `trace` logging was enabled, this `trace` wouldn't be logged. To fix this we also need to update the max log level. This max log level is used by the log macros to early return.
This commit is contained in:
@@ -81,11 +81,12 @@ pub fn reload_filter() -> Result<(), String> {
|
||||
}
|
||||
}
|
||||
}
|
||||
env_filter = env_filter.add_directive(
|
||||
"sc_tracing=trace"
|
||||
.parse()
|
||||
.expect("provided directive is valid"),
|
||||
);
|
||||
|
||||
// Set the max logging level for the `log` macros.
|
||||
let max_level_hint =
|
||||
tracing_subscriber::Layer::<tracing_subscriber::FmtSubscriber>::max_level_hint(&env_filter);
|
||||
log::set_max_level(super::to_log_level_filter(max_level_hint));
|
||||
|
||||
log::debug!(target: "tracing", "Reloading log filter with: {}", env_filter);
|
||||
FILTER_RELOAD_HANDLE
|
||||
.get()
|
||||
|
||||
@@ -70,6 +70,20 @@ macro_rules! enable_log_reloading {
|
||||
}};
|
||||
}
|
||||
|
||||
/// Convert a `Option<LevelFilter>` to a [`log::LevelFilter`].
|
||||
///
|
||||
/// `None` is interpreted as `Info`.
|
||||
fn to_log_level_filter(level_filter: Option<LevelFilter>) -> log::LevelFilter {
|
||||
match level_filter {
|
||||
Some(LevelFilter::INFO) | None => log::LevelFilter::Info,
|
||||
Some(LevelFilter::TRACE) => log::LevelFilter::Trace,
|
||||
Some(LevelFilter::WARN) => log::LevelFilter::Warn,
|
||||
Some(LevelFilter::ERROR) => log::LevelFilter::Error,
|
||||
Some(LevelFilter::DEBUG) => log::LevelFilter::Debug,
|
||||
Some(LevelFilter::OFF) => log::LevelFilter::Off,
|
||||
}
|
||||
}
|
||||
|
||||
/// Common implementation to get the subscriber.
|
||||
fn prepare_subscriber<N, E, F, W>(
|
||||
directives: &str,
|
||||
@@ -134,15 +148,7 @@ where
|
||||
}
|
||||
|
||||
let max_level_hint = Layer::<FmtSubscriber>::max_level_hint(&env_filter);
|
||||
|
||||
let max_level = match max_level_hint {
|
||||
Some(LevelFilter::INFO) | None => log::LevelFilter::Info,
|
||||
Some(LevelFilter::TRACE) => log::LevelFilter::Trace,
|
||||
Some(LevelFilter::WARN) => log::LevelFilter::Warn,
|
||||
Some(LevelFilter::ERROR) => log::LevelFilter::Error,
|
||||
Some(LevelFilter::DEBUG) => log::LevelFilter::Debug,
|
||||
Some(LevelFilter::OFF) => log::LevelFilter::Off,
|
||||
};
|
||||
let max_level = to_log_level_filter(max_level_hint);
|
||||
|
||||
tracing_log::LogTracer::builder()
|
||||
.with_max_level(max_level)
|
||||
|
||||
Reference in New Issue
Block a user