#![warn(missing_docs)]
#![warn(clippy::all)]
#![deny(unsafe_code)]
mod level;
mod logger;
mod style;
pub use level::Level;
pub use logger::Logger;
pub use style::LogStyle;
use std::sync::OnceLock;
static GLOBAL_LOGGER: OnceLock<Logger> = OnceLock::new();
pub fn global_logger() -> &'static Logger {
GLOBAL_LOGGER.get_or_init(Logger::default)
}
#[macro_export]
macro_rules! info {
($msg:expr) => {
$crate::global_logger().info($msg)
};
($msg:expr; $($key:expr => $value:expr),+ $(,)?) => {
$crate::global_logger().info_kv($msg, &[$(($key, &$value)),+])
};
}
#[macro_export]
macro_rules! warn {
($msg:expr) => {
$crate::global_logger().warn($msg)
};
($msg:expr; $($key:expr => $value:expr),+ $(,)?) => {
$crate::global_logger().warn_kv($msg, &[$(($key, &$value)),+])
};
}
#[macro_export]
macro_rules! error {
($msg:expr) => {
$crate::global_logger().error($msg)
};
($msg:expr; $($key:expr => $value:expr),+ $(,)?) => {
$crate::global_logger().error_kv($msg, &[$(($key, &$value)),+])
};
}
#[macro_export]
macro_rules! debug {
($msg:expr) => {
$crate::global_logger().debug($msg)
};
($msg:expr; $($key:expr => $value:expr),+ $(,)?) => {
$crate::global_logger().debug_kv($msg, &[$(($key, &$value)),+])
};
}
#[macro_export]
macro_rules! fatal {
($msg:expr) => {
$crate::global_logger().fatal($msg)
};
($msg:expr; $($key:expr => $value:expr),+ $(,)?) => {
$crate::global_logger().fatal_kv($msg, &[$(($key, &$value)),+])
};
}
pub mod prelude {
pub use crate::{debug, error, fatal, global_logger, info, warn, Level, LogStyle, Logger};
}