#[macro_export]
macro_rules! async_traces {
($logger:expr, $($arg:expr),+) => {
$crate::async_logs_common!($logger, $crate::LEVEL::Trace, $($arg),*);
};
() => {};
}
#[macro_export]
macro_rules! async_debugs {
($logger:expr, $($arg:expr),+) => {
$crate::async_logs_common!($logger, $crate::LEVEL::Debug, $($arg),*);
};
() => {};
}
#[macro_export]
macro_rules! async_infos {
($logger:expr, $($arg:expr),+) => {
$crate::async_logs_common!($logger, $crate::LEVEL::Info, $($arg),*);
};
() => {};
}
#[macro_export]
macro_rules! async_warns {
($logger:expr, $($arg:expr),+) => {
$crate::async_logs_common!($logger, $crate::LEVEL::Warn, $($arg),*);
};
() => {};
}
#[macro_export]
macro_rules! async_errors {
($logger:expr, $($arg:expr),+) => {
$crate::async_logs_common!($logger, $crate::LEVEL::Error, $($arg),*);
};
() => {};
}
#[macro_export]
macro_rules! async_fatals {
($logger:expr, $($arg:expr),+) => {
$crate::async_logs_common!($logger, $crate::LEVEL::Fatal, $($arg),*);
};
() => {};
}
#[macro_export]
macro_rules! async_formats {
($logger:expr, $level:expr, $($arg:expr),*) => {
unsafe {
let logger_lock:&mut Arc<tokio::sync::Mutex<tklog::Async::Logger>> = $logger;
let mut logger = logger_lock.as_ref().lock().await;
let level:$crate::LEVEL = $level;
let module = module_path!();
if logger.get_level(module) <= level {
let mut file = "";
let mut line = 0;
if logger.is_file_line($level,module) {
file = file!();
line = line!();
}
let ss = logger.fmt(module,$level, file, line, format!($($arg),*));
if !ss.is_empty(){
logger.print($level,module,ss.as_str()).await;
}
}
}
};
() => {};
}
#[macro_export]
macro_rules! async_logs_common {
($logger:expr, $level:expr, $($arg:expr),*) => {
unsafe {
let logger_lock:&mut Arc<tokio::sync::Mutex<tklog::Async::Logger>> = $logger;
let mut logger = logger_lock.as_ref().lock().await;
let module = module_path!();
if logger.get_level(module) <= $level {
let formatted_args: Vec<String> = vec![$(format!("{}", $arg)),*];
let mut file = "";
let mut line = 0;
if logger.is_file_line($level,module) {
file = file!();
line = line!();
}
let msg: String = formatted_args.join(logger.get_separator().as_str());
let ss = logger.fmt(module,$level, file, line, msg);
if !ss.is_empty(){
logger.print($level,module,ss.as_str()).await;
}
}
}
};
() => {};
}