#[macro_export]
macro_rules! gelf_log {
(target: $target:expr, $lvl:expr, $($key:tt $(:$capture:tt)? $(= $value:expr)?),+; $($arg:tt)+) => ({
let log_lvl = log::Level::from($lvl);
if log_lvl <= log::STATIC_MAX_LEVEL && log_lvl <= log::max_level() {
let lvl_key = $crate::INTERNAL_LEVEL_FIELD_NAME;
let kvs = [(lvl_key, log::__log_value!(lvl_key = $lvl as u32)), $((log::__log_key!($key), log::__log_value!($key $(:$capture)* = $($value)*))),+];
let mut builder = log::Record::builder();
builder
.args(format_args!($($arg)+))
.level(log_lvl) .target($target)
.module_path_static(Some(module_path!()))
.file_static(Some(file!()))
.line(Some(line!()))
.key_values(&kvs);
log::logger().log(&builder.build());
}
});
(target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
let log_lvl = log::Level::from($lvl);
if log_lvl <= log::STATIC_MAX_LEVEL && log_lvl <= log::max_level() {
let kvs = [($crate::INTERNAL_LEVEL_FIELD_NAME, $lvl as u32)];
let mut builder = log::Record::builder();
builder
.args(format_args!($($arg)+))
.level(log_lvl) .target($target)
.module_path_static(Some(module_path!()))
.file_static(Some(file!()))
.line(Some(line!()))
.key_values(&kvs);
log::logger().log(&builder.build());
}
});
($lvl:expr, $($arg:tt)+) => ($crate::gelf_log!(target: module_path!(), $lvl, $($arg)+));
}
#[macro_export]
macro_rules! gelf_emergency {
(target: $target:expr, $($arg:tt)+) => ($crate::gelf_log!(target: $target, gelf_logger::GelfLevel::Emergency, $($arg)+));
($($arg:tt)+) => ($crate::gelf_log!(gelf_logger::GelfLevel::Emergency, $($arg)+))
}
#[macro_export]
macro_rules! gelf_alert {
(target: $target:expr, $($arg:tt)+) => ($crate::gelf_log!(target: $target, gelf_logger::GelfLevel::Alert, $($arg)+));
($($arg:tt)+) => ($crate::gelf_log!(gelf_logger::GelfLevel::Alert, $($arg)+))
}
#[macro_export]
macro_rules! gelf_critical {
(target: $target:expr, $($arg:tt)+) => ($crate::gelf_log!(target: $target, gelf_logger::GelfLevel::Critical, $($arg)+));
($($arg:tt)+) => ($crate::gelf_log!(gelf_logger::GelfLevel::Critical, $($arg)+))
}
#[macro_export]
macro_rules! gelf_error {
(target: $target:expr, $($arg:tt)+) => ($crate::gelf_log!(target: $target, gelf_logger::GelfLevel::Error, $($arg)+));
($($arg:tt)+) => ($crate::gelf_log!(gelf_logger::GelfLevel::Error, $($arg)+))
}
#[macro_export]
macro_rules! gelf_warn {
(target: $target:expr, $($arg:tt)+) => ($crate::gelf_log!(target: $target, gelf_logger::GelfLevel::Warning, $($arg)+));
($($arg:tt)+) => ($crate::gelf_log!(gelf_logger::GelfLevel::Warning, $($arg)+))
}
#[macro_export]
macro_rules! gelf_notice {
(target: $target:expr, $($arg:tt)+) => ($crate::gelf_log!(target: $target, gelf_logger::GelfLevel::Notice, $($arg)+));
($($arg:tt)+) => ($crate::gelf_log!(gelf_logger::GelfLevel::Notice, $($arg)+))
}
#[macro_export]
macro_rules! gelf_info {
(target: $target:expr, $($arg:tt)+) => ($crate::gelf_log!(target: $target, gelf_logger::GelfLevel::Informational, $($arg)+));
($($arg:tt)+) => ($crate::gelf_log!(gelf_logger::GelfLevel::Informational, $($arg)+))
}
#[macro_export]
macro_rules! gelf_debug {
(target: $target:expr, $($arg:tt)+) => ($crate::gelf_log!(target: $target, gelf_logger::GelfLevel::Debugging, $($arg)+));
($($arg:tt)+) => ($crate::gelf_log!(gelf_logger::GelfLevel::Debugging, $($arg)+))
}