1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
// Copyright © 2022-2023 Mini Functions. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
// SPDX-License-Identifier: MIT
/// Macro to create a new log easily
/// Usage:
/// let log = macro_log!(session_id, time, level, component, description, format);
#[macro_export]
macro_rules! macro_log {
($session_id:expr, $time:expr, $level:expr, $component:expr, $description:expr, $format:expr) => {
$crate::Log::new(
$session_id,
$time,
$level,
$component,
$description,
$format,
)
};
}
/// Macro for info log with default session id and format
/// Usage:
/// let log = macro_info_log!(time, component, description);
#[macro_export]
macro_rules! macro_info_log {
($time:expr, $component:expr, $description:expr) => {
$crate::Log::new(
&vrd::Random::default().int(0, 1_000_000_000).to_string(),
$time,
&$crate::LogLevel::INFO,
$component,
$description,
&$crate::LogFormat::CLF,
)
};
}
/// Print log to stdout
/// Usage:
/// macro_print_log!(log);
#[macro_export]
macro_rules! macro_print_log {
($log:expr) => {
println!("{}", $log);
};
}
/// Async log message to file
/// Usage:
/// let result = macro_log_to_file!(log);
#[macro_export]
macro_rules! macro_log_to_file {
($log:expr) => {{
let result = $log.log().await;
result
}};
}
/// Macro for warn log
#[macro_export]
macro_rules! macro_warn_log {
($time:expr, $component:expr, $description:expr) => {
macro_log!(
&vrd::Random::default().int(0, 1_000_000_000).to_string(),
$time,
&LogLevel::WARNING,
$component,
$description,
&LogFormat::CLF
)
};
}
/// Macro for error log with default format
#[macro_export]
macro_rules! macro_error_log {
($time:expr, $component:expr, $description:expr) => {
macro_log!(
&vrd::Random::default().int(0, 1_000_000_000).to_string(),
$time,
&LogLevel::ERROR,
$component,
$description,
&LogFormat::CLF
)
};
}
/// Set log format if not already defined
/// Usage:
/// macro_set_log_format_clf!(log);
#[macro_export]
macro_rules! macro_set_log_format_clf {
($log:expr) => {
if $log.format != $crate::LogFormat::CLF {
$log.format = $crate::LogFormat::CLF;
}
};
}
/// Conditional debug logging
/// Logs if `debug_enabled` feature flag set
#[macro_export]
macro_rules! macro_debug_log {
($log:expr) => {
if cfg!(debug_enabled) {
macro_print_log!($log);
}
};
}