59 lines
1.2 KiB
Rust
59 lines
1.2 KiB
Rust
// 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);
|
|
}
|