pub struct Logger { log_level: LogLevel, } impl Logger { pub fn new(log_level: LogLevel) -> Logger { Logger { log_level } } pub fn log>(&self, log_level: LogLevel, message: T) { if self.log_level.clone() as i32 >= log_level.clone() as i32 { match log_level { LogLevel::SEVERE => eprintln!("[SEVERE]: {}", message.into()), LogLevel::INFO => println!("[INFO]: {}", message.into()), LogLevel::WARNING => eprintln!("[WARNING]: {}", message.into()), LogLevel::DETAIL => println!("[DETAIL]: {}", message.into()), LogLevel::DETAILER => println!("[DETAILER]: {}", message.into()), } } } } #[allow(dead_code)] #[derive(Clone)] pub enum LogLevel { SEVERE = 0, INFO = 1, WARNING = 2, // Default DETAIL = 3, DETAILER = 4, }