diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..e0386ab --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,76 @@ +mod log_level; +pub use log_level::*; + +use std::sync::Mutex; + + +pub const NORMAL: &str = "\x1b[0m"; +pub const BOLD: &str = "\x1b[1m"; +pub const WHITE: &str = "\x1b[37m"; +pub const RED: &str = "\x1b[31m"; +pub const YELLOW: &str = "\x1b[33m"; +pub const BLUE: &str = "\x1b[34m"; + + +pub static LOG_LEVEL: Mutex<LogLevel> = Mutex::new(LogLevel::Warn); + +pub fn set_log_level(level: LogLevel) { + *LOG_LEVEL.lock().unwrap() = level; +} + +pub fn get_log_level() -> LogLevel { + *LOG_LEVEL.lock().unwrap() +} + + +#[macro_export] macro_rules! info { + ($($tokens:tt)*) => { + if *$crate::LOG_LEVEL.lock().unwrap() <= { LogLevel::Info } { + eprint!("{}{}[INFO]{}: ", + $crate::BOLD, + $crate::BLUE, + $crate::NORMAL, + ); + eprint!($($tokens)*); + eprintln!("{}", + $crate::NORMAL, + ); + } + }; +} + +#[macro_export] macro_rules! warn { + ($($tokens:tt)*) => {{ + if *$crate::LOG_LEVEL.lock().unwrap() <= { LogLevel::Warn } { + eprint!("{}{}[WARNING]{}{}: ", + $crate::BOLD, + $crate::YELLOW, + $crate::NORMAL, + $crate::WHITE, + ); + eprint!($($tokens)*); + eprintln!("{}", + $crate::NORMAL, + ); + } + }}; +} + +#[macro_export] macro_rules! error { + ($($tokens:tt)*) => {{ + if *$crate::LOG_LEVEL.lock().unwrap() <= { LogLevel::Error } { + eprint!("{}{}[ERROR]{}: ", + $crate::BOLD, + $crate::RED, + $crate::WHITE, + + ); + eprint!($($tokens)*); + eprintln!("{}", + $crate::NORMAL, + ); + } + std::process::exit(1); + }}; +} + |