mirror of
https://github.com/Astatin3/unshell.git
synced 2026-06-09 06:47:59 -06:00
Add init checking to PrettyLogger
This commit is contained in:
@@ -12,6 +12,7 @@ use std::time::SystemTime;
|
|||||||
pub use pretty_logger::PrettyLogger;
|
pub use pretty_logger::PrettyLogger;
|
||||||
pub use pretty_logger::log;
|
pub use pretty_logger::log;
|
||||||
|
|
||||||
|
pub static mut IS_DEFAULT_LOGGER: bool = true;
|
||||||
static mut LOGGER: &dyn Logger = &DefaultLogger;
|
static mut LOGGER: &dyn Logger = &DefaultLogger;
|
||||||
|
|
||||||
#[derive(Debug, serde::Serialize, serde::Deserialize)]
|
#[derive(Debug, serde::Serialize, serde::Deserialize)]
|
||||||
@@ -46,12 +47,14 @@ pub fn set_logger_box(logger: Box<dyn Logger>) {
|
|||||||
#[cfg(feature = "log")]
|
#[cfg(feature = "log")]
|
||||||
unsafe {
|
unsafe {
|
||||||
LOGGER = Box::leak(logger);
|
LOGGER = Box::leak(logger);
|
||||||
|
IS_DEFAULT_LOGGER = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_logger(logger: &'static dyn Logger) {
|
pub fn set_logger(logger: &'static dyn Logger) {
|
||||||
unsafe {
|
unsafe {
|
||||||
LOGGER = logger;
|
LOGGER = logger;
|
||||||
|
IS_DEFAULT_LOGGER = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,15 +52,19 @@ pub fn log(message: &Record) {
|
|||||||
|
|
||||||
impl PrettyLogger {
|
impl PrettyLogger {
|
||||||
pub fn init() {
|
pub fn init() {
|
||||||
|
if !unsafe { crate::logger::IS_DEFAULT_LOGGER } {
|
||||||
crate::logger::set_logger_box(Box::new(PrettyLogger { output: None }));
|
crate::logger::set_logger_box(Box::new(PrettyLogger { output: None }));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn init_output<T>(output: T)
|
pub fn init_output<T>(output: T)
|
||||||
where
|
where
|
||||||
T: Fn(&Record) + 'static,
|
T: Fn(&Record) + 'static,
|
||||||
{
|
{
|
||||||
|
if !unsafe { crate::logger::IS_DEFAULT_LOGGER } {
|
||||||
crate::logger::set_logger_box(Box::new(PrettyLogger {
|
crate::logger::set_logger_box(Box::new(PrettyLogger {
|
||||||
output: Some(Box::new(output)),
|
output: Some(Box::new(output)),
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user