// Logging utilities // Log levels #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub enum LogLevel { Debug, Info, Warning, Error, } // Global log level (could be made configurable) static mut CURRENT_LOG_LEVEL: LogLevel = LogLevel::Info; // Set the global log level pub fn set_log_level(level: LogLevel) { unsafe { CURRENT_LOG_LEVEL = level; } } // Get the current log level pub fn get_log_level() -> LogLevel { unsafe { CURRENT_LOG_LEVEL } } // Log a message at the specified level pub fn log(level: LogLevel, message: &str) { if level >= unsafe { CURRENT_LOG_LEVEL } { let prefix = match level { LogLevel::Debug => "[DEBUG]", LogLevel::Info => "[INFO]", LogLevel::Warning => "[WARNING]", LogLevel::Error => "[ERROR]", }; println!("{} {}", prefix, message); } } // Convenience functions for different log levels pub fn debug(message: &str) { log(LogLevel::Debug, message); } pub fn info(message: &str) { log(LogLevel::Info, message); } pub fn warning(message: &str) { log(LogLevel::Warning, message); } pub fn error(message: &str) { log(LogLevel::Error, message); }