use std::sync::{Mutex, LazyLock};
use super::*;
type Res = Result<(), Box<dyn std::error::Error>>;
static LOG: Mutex<LazyLock<logs::Logger, fn() -> logs::Logger>> = Mutex::new(LazyLock::new(|| logs::Logger::new()));
#[cfg(not(feature = "async"))]
pub use sync::*;
#[cfg(feature = "async")]
mod r#async;
#[cfg(feature = "async")]
pub use r#async::*;
#[cfg(not(feature = "async"))]
mod sync {
use super::*;
pub fn cfg(c: &[logs::Options]) -> Res {
LOG.lock()?.cfg(c)?;
Ok(())
}
#[inline(always)]
pub fn info(s: &str) {
LOG.lock().unwrap().info(s);
}
#[inline(always)]
pub fn warn(s: &str) {
LOG.lock().unwrap().warn(s);
}
#[inline(always)]
pub fn error(s: &str) {
LOG.lock().unwrap().error(s);
}
#[inline(always)]
pub fn success(s: &str) {
LOG.lock().unwrap().success(s);
}
#[inline(always)]
pub fn debug(s: &str) {
LOG.lock().unwrap().debug(s);
}
#[inline(always)]
pub fn critical(s: &str) {
LOG.lock().unwrap().critical(s);
}
}