diff --git a/src/logger.rs b/src/logger.rs index a3d9a92..29fc31e 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -1,15 +1,34 @@ #[derive(Debug, Default)] pub struct Logger { - pub quiet: bool, + pub level: LogLevel, +} + +macro_rules! define_log_function { + ($name:ident, $level:ident) => { + pub fn $name(&self, message: S) where S: ToString { + self.log(LogLevel::$level, message.to_string()); + } + }; } impl Logger { - pub fn info(&self, message: impl ToString) { - if self.quiet { - return; + pub fn log(&self, level: LogLevel, message: S) where S: ToString { + if level >= self.level { + println!("{}", message.to_string()); } - println!("{}", message.to_string()); } + + define_log_function!(info, Info); + define_log_function!(debug, Debug); + define_log_function!(error, Error); +} + +#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Default)] +pub enum LogLevel { + Debug, + #[default] + Info, + Error, } #[macro_export] @@ -29,7 +48,7 @@ mod test { #[test] #[ignore] fn syntax_test() { - let logger = Logger { quiet: false }; + let logger = Logger::default(); log!(logger, "Foo {}", "bar"); } } diff --git a/src/main.rs b/src/main.rs index 2f95742..a33f187 100644 --- a/src/main.rs +++ b/src/main.rs @@ -112,7 +112,7 @@ enum OldVersionPolicy { fn main() -> Result<(), String> { let args = Args::parse(); - let logger = Logger { quiet: false }; + let logger = Logger::default(); let mut configured_servers = LazyCell::new(parse_server_configuration_from_env); let servers = args