teascade-generator/src/logger.rs

48 lines
1.3 KiB
Rust
Raw Normal View History

2018-04-16 15:58:16 +02:00
pub struct Logger {
log_level: LogLevel,
}
impl Logger {
pub fn new(log_level: LogLevel) -> Logger {
Logger { log_level }
}
pub fn log<T: Into<String>>(&self, log_level: LogLevel, message: T) {
if self.log_level.clone() as i32 >= log_level.clone() as i32 {
match log_level {
2018-04-16 18:31:38 +02:00
LogLevel::QUIET => (),
2018-04-16 15:58:16 +02:00
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)]
2018-04-16 18:31:38 +02:00
#[repr(u8)]
2018-04-16 15:58:16 +02:00
pub enum LogLevel {
2018-04-16 18:31:38 +02:00
QUIET = 0,
SEVERE = 1,
INFO = 2,
WARNING = 3, // Default
DETAIL = 4,
DETAILER = 5,
}
impl From<u8> for LogLevel {
fn from(number: u8) -> LogLevel {
match number {
0 => LogLevel::QUIET,
1 => LogLevel::SEVERE,
2 => LogLevel::INFO,
4 => LogLevel::DETAIL,
5 => LogLevel::DETAILER,
_ => LogLevel::WARNING, // 3, also fallback
}
}
2018-04-16 15:58:16 +02:00
}