use cfg_if::cfg_if;
cfg_if! {
if #[cfg(feature = "advance")] {
#[macro_export(local_inner_macros)]
macro_rules! log {
(target: $target:expr, $lvl:expr, $($key:ident = $value:expr),* ; $fmt:expr, $($arg:tt)+) => {
$crate::advance::log($target.to_string().as_bytes(), __log_format_args!($fmt, $($arg)+).to_string().as_bytes(), $lvl);
};
(target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
$crate::advance::log($target.to_string().as_bytes(), __log_format_args!($($arg)+).to_string().as_bytes(), $lvl);
});
($lvl:expr, $($arg:tt)+) => ({
log!(target: __log_format_args!("{}:{}", __log_file!(), __log_line!()), $lvl, $($arg)+)
});
($($arg:tt)+) => ({
log!(target: __log_format_args!("{}:{}", __log_file!(), __log_line!()), $crate::types::LogLevel::INFO, $($arg)+)
});
() => {
log!("")
}
}
} else {
#[macro_export(local_inner_macros)]
macro_rules! log {
(target: $target:expr, $lvl:expr, $($key:ident = $value:expr),* ; $fmt:expr, $($arg:tt)+) => {
$crate::normal::log($target.to_string().as_bytes(), __log_format_args!($fmt, $($arg)+).to_string().as_bytes(), $lvl);
};
(target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
$crate::normal::log($target.to_string().as_bytes(), __log_format_args!($($arg)+).to_string().as_bytes(), $lvl);
});
($lvl:expr, $($arg:tt)+) => ({
log!(target: __log_format_args!("{}:{}", __log_file!(), __log_line!()), $lvl, $($arg)+)
});
($($arg:tt)+) => ({
log!(target: __log_format_args!("{}:{}", __log_file!(), __log_line!()), $crate::types::LogLevel::INFO, $($arg)+)
});
() => {
log!("")
}
}
}
}
#[macro_export(local_inner_macros)]
macro_rules! critical {
($($arg:tt)+) => ({
log!($crate::types::LogLevel::CRITICAL, $($arg)+)
});
() => ({
log!($crate::types::LogLevel::CRITICAL, "")
});
}
#[macro_export(local_inner_macros)]
macro_rules! error {
($($arg:tt)+) => (
log!($crate::types::LogLevel::ERROR, $($arg)+)
);
() => (
log!($crate::types::LogLevel::ERROR, "")
);
}
#[macro_export(local_inner_macros)]
macro_rules! warning {
($($arg:tt)+) => (
log!($crate::types::LogLevel::WARNING, $($arg)+)
);
() => (
log!($crate::types::LogLevel::WARNING, "")
);
}
#[macro_export(local_inner_macros)]
macro_rules! notice {
($($arg:tt)+) => (
log!($crate::types::LogLevel::NOTICE, $($arg)+)
);
() => (
log!($crate::types::LogLevel::NOTICE, "")
);
}
#[macro_export(local_inner_macros)]
macro_rules! info {
($($arg:tt)+) => (
log!($crate::types::LogLevel::INFO, $($arg)+)
);
() => (
log!($crate::types::LogLevel::INFO, "")
);
}
#[macro_export(local_inner_macros)]
macro_rules! debug {
($($arg:tt)+) => (
log!($crate::types::LogLevel::DEBUG, $($arg)+)
);
() => (
log!($crate::types::LogLevel::DEBUG, "")
);
}
#[doc(hidden)]
#[macro_export]
macro_rules! __log_format_args {
($($args:tt)*) => {
format_args!($($args)*)
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __log_file {
() => {
file!()
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __log_line {
() => {
line!()
};
}