logger: Respect config file log level
- Fixes a bug where the log level set in the config file was ignored: `Logger` and `StderrLogger` captured the level in a `self.level` field at construction time and checked it in `Log::enabled`. After config was loaded, the global `log::set_max_level` was updated but `self.level` was not, so verbose messages were dropped by the per-instance filter even when the global filter allowed them. - Make `log::set_max_level` the single source of truth: remove the `level` field and have `Log::enabled` defer to `log::max_level()` so the two filters can no longer drift. - Update call sites to construct loggers without a level. - Disable the structured logger's internal filter (set to "trace") so that it also falls back to `log::set_max_level`.
This commit is contained in:
parent
9177146794
commit
6b460c4429
|
|
@ -138,7 +138,7 @@ fn main() {
|
|||
}
|
||||
|
||||
if let Some(lvl) = radicle::logger::env_level() {
|
||||
let logger = Box::new(radicle::logger::Logger::new(lvl));
|
||||
let logger = Box::new(radicle::logger::Logger::new());
|
||||
log::set_boxed_logger(logger).expect("no other logger should have been set already");
|
||||
log::set_max_level(lvl.to_level_filter());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -376,7 +376,12 @@ fn initialize_logging(options: &LogOptions) -> Result<(), Box<dyn std::error::Er
|
|||
LogFormat::Json => json::new_writer(io::stdout()),
|
||||
};
|
||||
|
||||
Box::new(Builder::new().with_default_writer(writer).build())
|
||||
// Set to trace (via `Level::max`) and defer to log::set_max_level for filtering
|
||||
Box::new(
|
||||
Builder::with_level(log::Level::max().as_str())
|
||||
.with_default_writer(writer)
|
||||
.build(),
|
||||
)
|
||||
}
|
||||
#[cfg(all(feature = "systemd", target_os = "linux"))]
|
||||
Logger::Systemd => {
|
||||
|
|
@ -398,7 +403,7 @@ fn initialize_logging(options: &LogOptions) -> Result<(), Box<dyn std::error::Er
|
|||
const SYSLOG_IDENTIFIER: &str = "radicle-node";
|
||||
logger::<&str, &str, _>(SYSLOG_IDENTIFIER.to_string(), []).map_err(Box::new)?
|
||||
}
|
||||
Logger::Radicle => Box::new(radicle::logger::Logger::new(level)),
|
||||
Logger::Radicle => Box::new(radicle::logger::Logger::new()),
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ fn main() {
|
|||
let mut args = env::args();
|
||||
|
||||
if let Some(lvl) = radicle::logger::env_level() {
|
||||
let logger = radicle::logger::StderrLogger::new(lvl);
|
||||
let logger = radicle::logger::StderrLogger::new();
|
||||
log::set_boxed_logger(Box::new(logger))
|
||||
.expect("no other logger should have been set already");
|
||||
log::set_max_level(lvl.to_level_filter());
|
||||
|
|
|
|||
|
|
@ -13,19 +13,23 @@ use colored::*;
|
|||
use log::{Level, Log, Metadata, Record};
|
||||
|
||||
/// A logger that logs to `stdout`.
|
||||
pub struct Logger {
|
||||
level: Level,
|
||||
}
|
||||
pub struct Logger;
|
||||
|
||||
impl Logger {
|
||||
pub fn new(level: Level) -> Self {
|
||||
Self { level }
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for Logger {
|
||||
fn default() -> Self {
|
||||
Self::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl Log for Logger {
|
||||
fn enabled(&self, metadata: &Metadata) -> bool {
|
||||
metadata.level() <= self.level
|
||||
metadata.level() <= log::max_level()
|
||||
}
|
||||
|
||||
fn log(&self, record: &Record) {
|
||||
|
|
@ -60,19 +64,23 @@ impl Log for Logger {
|
|||
}
|
||||
|
||||
/// A logger that logs to `stderr`.
|
||||
pub struct StderrLogger {
|
||||
level: Level,
|
||||
}
|
||||
pub struct StderrLogger;
|
||||
|
||||
impl StderrLogger {
|
||||
pub fn new(level: Level) -> Self {
|
||||
Self { level }
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for StderrLogger {
|
||||
fn default() -> Self {
|
||||
Self::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl Log for StderrLogger {
|
||||
fn enabled(&self, metadata: &Metadata) -> bool {
|
||||
metadata.level() <= self.level
|
||||
metadata.level() <= log::max_level()
|
||||
}
|
||||
|
||||
fn log(&self, record: &Record) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue