#[macro_export]
macro_rules! gelf_log {
(level: $level:expr, extra: $extra:expr, $($arg:tt)+) => (
use std::collections::BTreeMap;
use serde_gelf::GelfRecordBuilder;
$crate::processor().send(&serde_gelf::GelfRecord::new()
.set_facility(module_path!().to_string())
.set_file(file!().to_string())
.set_line(line!())
.set_level($level)
.set_message(format_args!($($arg)+).to_string())
.extend_additional_fields(match serde_gelf::to_flat_dict($extra) {
Ok(data) => data,
Err(_) => BTreeMap::new()
})
);
);
(level: $level:expr, $($arg:tt)+) => (
gelf_log!(level: $level, extra: BTreeMap::new(), $($arg)+);
);
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::default(), extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::default(), extra: BTreeMap::new(), $($arg)+);
);
}
#[macro_export]
macro_rules! gelf_emergency {
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Emergency, extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Emergency, extra: BTreeMap::new(), $($arg)+);
);
}
#[macro_export]
macro_rules! gelf_alert {
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Alert, extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Alert, extra: BTreeMap::new(), $($arg)+);
);
}
#[macro_export]
macro_rules! gelf_critical {
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Critical, extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Critical, extra: BTreeMap::new(), $($arg)+);
);
}
#[macro_export]
macro_rules! gelf_error {
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Error, extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Error, extra: BTreeMap::new(), $($arg)+);
);
}
#[macro_export]
macro_rules! gelf_warn {
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Warning, extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Warning, extra: BTreeMap::new(), $($arg)+);
);
}
#[macro_export]
macro_rules! gelf_notice {
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Notice, extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Notice, extra: BTreeMap::new(), $($arg)+);
);
}
#[macro_export]
macro_rules! gelf_info {
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Informational, extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Informational, extra: BTreeMap::new(), $($arg)+);
);
}
#[macro_export]
macro_rules! gelf_debug {
(extra: $extra:expr, $($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Debugging, extra: $extra, $($arg)+);
);
($($arg:tt)+) => (
gelf_log!(level: serde_gelf::GelfLevel::Debugging, extra: BTreeMap::new(), $($arg)+);
);
}