diff --git a/src/logger/mod.rs b/src/logger/mod.rs index 9aeb0cb..8c9cbf0 100644 --- a/src/logger/mod.rs +++ b/src/logger/mod.rs @@ -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) { #[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; } } diff --git a/src/logger/pretty_logger.rs b/src/logger/pretty_logger.rs index c41b1c1..7da688a 100644 --- a/src/logger/pretty_logger.rs +++ b/src/logger/pretty_logger.rs @@ -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(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)), + })); + } } }