sustenet_shared/
logging.rs1pub enum LogLevel {
2    Debug,
3    Info,
4    Warning,
5    Error,
6    Success,
7}
8
9pub enum LogType {
10    Master,
11    Cluster,
12    Client,
13    System,
14}
15
16#[macro_export]
17macro_rules! log_message {
18    (
19        $level:expr,
20        $type:expr,
21        $($arg:tt)*
22    ) => {
23        {
24            use $crate::logging::LogLevel;
25            use $crate::logging::LogType;
26            use $crate::utils::constants::{
27                TERMINAL_BLUE,
28                TERMINAL_GREEN,
29                TERMINAL_ORANGE,
30                TERMINAL_RED,
31                TERMINAL_DEFAULT,
32            };
33
34            let level_str = match $level {
35                LogLevel::Debug => format!("{}[DEBUG]", TERMINAL_BLUE),
36                LogLevel::Info => format!("{}[INFO]", TERMINAL_DEFAULT),
37                LogLevel::Warning => format!("{}[WARNING]", TERMINAL_ORANGE),
38                LogLevel::Error => format!("{}[ERROR]", TERMINAL_RED),
39                LogLevel::Success => format!("{}[SUCCESS]", TERMINAL_GREEN),
40            };
41
42            let type_str = match $type {
43                LogType::Master => "[Master]",
44                LogType::Cluster => "[Cluster]",
45                LogType::Client => "[Client]",
46                LogType::System => "[System]",
47            };
48
49            println!("{}{} {}{}", level_str, type_str, format!($($arg)*), TERMINAL_DEFAULT);
50        }
51    };
52}