summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2025-02-03 09:04:47 +1300
committerBen Bridle <ben@derelict.engineering>2025-02-03 09:20:04 +1300
commitd29420c886d77095c99761f6deb71081f7bc8dcb (patch)
tree331fac599cc723d72e3bfd2c8fd95b23d33896bd /src/lib.rs
downloadlog-d29420c886d77095c99761f6deb71081f7bc8dcb.zip
Initial commit
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs76
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);
+ }};
+}
+