tighten up the log level changing

This commit is contained in:
Joe Ardent 2025-07-30 12:41:18 -07:00
parent 7ecca3709d
commit 7072055f38

View file

@ -221,29 +221,14 @@ impl App {
} }
} }
fn change_log_level(delta: i8) { fn change_log_level(delta: isize) {
let level = log::max_level(); let level = log::max_level() as isize;
use LevelFilter::*; let max = log::LevelFilter::max() as isize;
let nl = if delta.signum().is_positive() { let level = (level + delta).clamp(0, max) as usize;
match level { // levelfilter is repr(usize) so this is safe
Off => Error, let level = unsafe { std::mem::transmute::<usize, LevelFilter>(level) };
Error => Warn,
Warn => Info, log::set_max_level(level);
Info => Debug,
Debug => Trace,
Trace => Trace,
}
} else {
match level {
Off => Off,
Error => Off,
Warn => Error,
Info => Warn,
Debug => Info,
Trace => Debug,
}
};
log::set_max_level(nl);
} }
impl Widget for &App { impl Widget for &App {