#[macro_export]
macro_rules! log {
($lvl:expr, $msg:expr) => {{
let level = $lvl;
if level <= $crate::max_level() {
$crate::private::log_minimal(
level,
&(module_path!(), file!(), line!(), $msg),
);
}
}};
(
$lvl:expr,
$msg:expr
$(, safe: { $($safe_key:ident: $safe_value:expr),* $(,)? })?
$(, unsafe: { $($unsafe_key:ident: $unsafe_value:expr),* $(,)? })?
$(, error: $error:expr)?
$(,)?
) => {{
let level = $lvl;
if level <= $crate::max_level() {
$crate::private::log(
level,
&(module_path!(), file!(), line!(), $msg),
&[$($((stringify!($safe_key), &$safe_value)),*)*],
&[$($((stringify!($unsafe_key), &$unsafe_value)),*)*],
None $(.or(Some(&$error)))?,
);
}
}};
}
#[macro_export]
macro_rules! fatal {
($($v:tt)*) => {
$crate::log!($crate::Level::Fatal, $($v)*)
}
}
#[macro_export]
macro_rules! error {
($($v:tt)*) => {
$crate::log!($crate::Level::Error, $($v)*)
}
}
#[macro_export]
macro_rules! warn {
($($v:tt)*) => {
$crate::log!($crate::Level::Warn, $($v)*)
}
}
#[macro_export]
macro_rules! info {
($($v:tt)*) => {
$crate::log!($crate::Level::Info, $($v)*)
}
}
#[macro_export]
macro_rules! debug {
($($v:tt)*) => {
$crate::log!($crate::Level::Debug, $($v)*)
}
}
#[macro_export]
macro_rules! trace {
($($v:tt)*) => {
$crate::log!($crate::Level::Trace, $($v)*)
}
}
#[macro_export]
macro_rules! enabled {
($lvl:expr) => {{
let level = $lvl;
level <= $crate::max_level() && $crate::private::enabled(level, module_path!())
}};
}