#[macro_export]
macro_rules! info {
($($arg:tt)*) => {
$crate::log_message("info", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! warn {
($($arg:tt)*) => {
$crate::log_message("warn", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! error {
($($arg:tt)*) => {
$crate::log_message("error", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! success {
($($arg:tt)*) => {
$crate::log_message("success", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! debug {
($($arg:tt)*) => {
$crate::log_message("debug", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! trace {
($($arg:tt)*) => {
$crate::log_message("trace", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! fatal {
($($arg:tt)*) => {
$crate::log_message("fatal", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! ready {
($($arg:tt)*) => {
$crate::log_message("ready", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! start {
($($arg:tt)*) => {
$crate::log_message("start", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! fail {
($($arg:tt)*) => {
$crate::log_message("fail", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! log_type {
($type_name:expr, $($arg:tt)*) => {
$crate::log_message($type_name, &format!($($arg)*))
};
}
#[macro_export]
macro_rules! info_raw {
($($arg:tt)*) => {
$crate::log_message_raw("info", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! warn_raw {
($($arg:tt)*) => {
$crate::log_message_raw("warn", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! error_raw {
($($arg:tt)*) => {
$crate::log_message_raw("error", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! success_raw {
($($arg:tt)*) => {
$crate::log_message_raw("success", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! debug_raw {
($($arg:tt)*) => {
$crate::log_message_raw("debug", &format!($($arg)*))
};
}
#[macro_export]
macro_rules! trace_raw {
($($arg:tt)*) => {
$crate::log_message_raw("trace", &format!($($arg)*))
};
}
pub fn log_message(type_name: &str, message: &str) {
println!("[{}] {}", type_name, message);
}
pub fn log_message_raw(_type_name: &str, message: &str) {
println!("{}", message);
}
#[cfg(test)]
mod tests {
#[test]
fn test_info_macro() {
info!("Test info message");
info!("Test with arg: {}", 42);
}
#[test]
fn test_warn_macro() {
warn!("Test warning");
}
#[test]
fn test_error_macro() {
error!("Test error");
}
#[test]
fn test_success_macro() {
success!("Test success");
}
#[test]
fn test_debug_macro() {
debug!("Test debug");
}
#[test]
fn test_trace_macro() {
trace!("Test trace");
}
#[test]
fn test_fatal_macro() {
fatal!("Test fatal");
}
#[test]
fn test_ready_macro() {
ready!("Test ready");
}
#[test]
fn test_start_macro() {
start!("Test start");
}
#[test]
fn test_fail_macro() {
fail!("Test fail");
}
#[test]
fn test_log_type_macro() {
log_type!("custom", "Test custom type");
}
#[test]
fn test_raw_macros() {
info_raw!("Raw info");
warn_raw!("Raw warning");
error_raw!("Raw error");
success_raw!("Raw success");
debug_raw!("Raw debug");
trace_raw!("Raw trace");
}
}