Add init checking to PrettyLogger

This commit is contained in:
Michael Mikovsky
2026-02-20 15:55:21 -07:00
parent 5a60f3f503
commit 55d2deef1c
2 changed files with 11 additions and 4 deletions
+3
View File
@@ -12,6 +12,7 @@ use std::time::SystemTime;
pub use pretty_logger::PrettyLogger;
pub use pretty_logger::log;
pub static mut IS_DEFAULT_LOGGER: bool = true;
static mut LOGGER: &dyn Logger = &DefaultLogger;
#[derive(Debug, serde::Serialize, serde::Deserialize)]
@@ -46,12 +47,14 @@ pub fn set_logger_box(logger: Box<dyn Logger>) {
#[cfg(feature = "log")]
unsafe {
LOGGER = Box::leak(logger);
IS_DEFAULT_LOGGER = false;
}
}
pub fn set_logger(logger: &'static dyn Logger) {
unsafe {
LOGGER = logger;
IS_DEFAULT_LOGGER = false;
}
}
+8 -4
View File
@@ -52,15 +52,19 @@ pub fn log(message: &Record) {
impl PrettyLogger {
pub fn init() {
crate::logger::set_logger_box(Box::new(PrettyLogger { output: None }));
if !unsafe { crate::logger::IS_DEFAULT_LOGGER } {
crate::logger::set_logger_box(Box::new(PrettyLogger { output: None }));
}
}
pub fn init_output<T>(output: T)
where
T: Fn(&Record) + 'static,
{
crate::logger::set_logger_box(Box::new(PrettyLogger {
output: Some(Box::new(output)),
}));
if !unsafe { crate::logger::IS_DEFAULT_LOGGER } {
crate::logger::set_logger_box(Box::new(PrettyLogger {
output: Some(Box::new(output)),
}));
}
}
}