From 1a9a8d6d3b99d672c36ca3eea33703e32a82b521 Mon Sep 17 00:00:00 2001 From: Chance Date: Wed, 16 Apr 2025 12:59:35 -0400 Subject: [PATCH] feat: set max loglevel in logger configuration --- Cargo.toml | 4 ++-- subcrates/zlog/src/config.rs | 8 +++++--- subcrates/zlog/src/lib.rs | 29 +++++++++++++++++++++++++---- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 571f58a..5990c93 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ repository = "https://codeberg.org/Caznix/Zenyx" [workspace] resolver = "2" -members = [ "subcrates/renderer","subcrates/zlog"] +members = ["subcrates/renderer", "subcrates/zlog"] [workspace.dependencies] zlog = { path = "subcrates/zlog" } @@ -46,5 +46,5 @@ tracing = "0.1.41" tracing-subscriber = { version = "0.3.19", features = ["env-filter"] } vulkano = "0.35.1" wgpu = { version = "25.0.0", features = ["spirv"] } -winit = "0.30.9" +winit = { version = "0.30.9", features = ["android-native-activity"] } zlog.workspace = true diff --git a/subcrates/zlog/src/config.rs b/subcrates/zlog/src/config.rs index dac6476..bb3fb76 100644 --- a/subcrates/zlog/src/config.rs +++ b/subcrates/zlog/src/config.rs @@ -4,18 +4,19 @@ use crate::LogLevel; #[derive(Debug, Clone, PartialEq, Eq)] pub struct LoggerConfig { - pub(crate) log_level: LogLevel, + pub(crate) log_level: Option, pub(crate) log_to_file: bool, pub(crate) log_file_path: PathBuf, pub(crate) log_to_stdout: bool, pub(crate) stdout_color: bool, pub(crate) stdout_include_time: bool, pub(crate) file_include_time: bool, + pub(crate) crate_max_level: Option, } impl LoggerConfig { pub fn level(mut self, level: LogLevel) -> Self { - self.log_level = level; + self.log_level = Some(level); self } @@ -53,7 +54,8 @@ impl LoggerConfig { impl Default for LoggerConfig { fn default() -> Self { Self { - log_level: LogLevel::Debug, + log_level: None, + crate_max_level: None, log_to_file: true, log_file_path: "app.log".into(), log_to_stdout: true, diff --git a/subcrates/zlog/src/lib.rs b/subcrates/zlog/src/lib.rs index 0ee404c..f81212f 100644 --- a/subcrates/zlog/src/lib.rs +++ b/subcrates/zlog/src/lib.rs @@ -18,8 +18,9 @@ use std::{ use config::LoggerConfig; use query::LogQuery; -use tracing::{Event, Level, Subscriber}; +use tracing::{Event, Level, Subscriber, level_filters::LevelFilter, subscriber::DefaultGuard}; use tracing_subscriber::{ + fmt::writer::WithFilter, layer::{Context, Layer, SubscriberExt}, registry::LookupSpan, util::SubscriberInitExt, @@ -153,6 +154,17 @@ impl From for tracing::Level { } } } +impl From for LevelFilter { + fn from(level: LogLevel) -> Self { + match level { + LogLevel::Error => LevelFilter::ERROR, + LogLevel::Info => LevelFilter::INFO, + LogLevel::Debug => LevelFilter::DEBUG, + LogLevel::Trace => LevelFilter::TRACE, + LogLevel::Warn => LevelFilter::WARN, + } + } +} impl fmt::Display for LogLevel { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { @@ -238,13 +250,22 @@ impl Logger { } let buffer_layer = BufferLayer::new(log_entries.clone(), senders); - let subscriber = tracing_subscriber::registry().with(buffer_layer); - let guard = subscriber.set_default(); - Logger { + let mk_logger = |guard: DefaultGuard| Logger { subscriber_guard: Some(guard), log_entries, _handles: handles, + }; + if let Some(level) = config.log_level { + let subscriber = tracing_subscriber::registry() + .with(buffer_layer) + .with(LevelFilter::from(level)); + let guard = subscriber.set_default(); + mk_logger(guard) + } else { + let subscriber = tracing_subscriber::registry().with(buffer_layer); + let guard = subscriber.set_default(); + mk_logger(guard) } }