#[macro_export]
macro_rules! log_at {
($logger:expr, $level:expr, $msg:expr $(,)?) => {{
let __logger = &$logger;
let __level: $crate::Level = $level;
if __logger.enabled(::core::module_path!(), __level) {
let __fields: [$crate::Field<'_>; 0] = [];
let __metadata = $crate::Metadata::new(__level, ::core::module_path!())
.with_location(::core::file!(), ::core::line!());
let _ = __logger.try_emit(__metadata, $msg, &__fields);
}
}};
($logger:expr, $level:expr, $msg:expr, $($key:ident = $value:expr),+ $(,)?) => {{
let __logger = &$logger;
let __level: $crate::Level = $level;
if __logger.enabled(::core::module_path!(), __level) {
let __fields = [
$(
$crate::Field::new(stringify!($key), $crate::Value::from($value)),
)+
];
let __metadata = $crate::Metadata::new(__level, ::core::module_path!())
.with_location(::core::file!(), ::core::line!());
let _ = __logger.try_emit(__metadata, $msg, &__fields);
}
}};
}
#[macro_export]
macro_rules! trace {
($logger:expr, $($rest:tt)*) => {
$crate::log_at!($logger, $crate::Level::Trace, $($rest)*)
};
}
#[macro_export]
macro_rules! debug {
($logger:expr, $($rest:tt)*) => {
$crate::log_at!($logger, $crate::Level::Debug, $($rest)*)
};
}
#[macro_export]
macro_rules! info {
($logger:expr, $($rest:tt)*) => {
$crate::log_at!($logger, $crate::Level::Info, $($rest)*)
};
}
#[macro_export]
macro_rules! warn {
($logger:expr, $($rest:tt)*) => {
$crate::log_at!($logger, $crate::Level::Warn, $($rest)*)
};
}
#[macro_export]
macro_rules! error {
($logger:expr, $($rest:tt)*) => {
$crate::log_at!($logger, $crate::Level::Error, $($rest)*)
};
}