forked from AbleOS/holey-bytes
49 lines
1.4 KiB
Rust
49 lines
1.4 KiB
Rust
|
#![allow(unused_macros)]
|
||
|
|
||
|
#[derive(PartialOrd, PartialEq, Ord, Eq, Debug)]
|
||
|
pub enum Level {
|
||
|
Err,
|
||
|
Wrn,
|
||
|
Inf,
|
||
|
Dbg,
|
||
|
}
|
||
|
|
||
|
pub const LOG_LEVEL: Level = match option_env!("LOG_LEVEL") {
|
||
|
Some(val) => match val.as_bytes()[0] {
|
||
|
b'e' => Level::Err,
|
||
|
b'w' => Level::Wrn,
|
||
|
b'i' => Level::Inf,
|
||
|
b'd' => Level::Dbg,
|
||
|
_ => panic!("Invalid log level."),
|
||
|
},
|
||
|
None => {
|
||
|
if cfg!(debug_assertions) {
|
||
|
Level::Dbg
|
||
|
} else {
|
||
|
Level::Err
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
macro_rules! log {
|
||
|
($level:expr, $fmt:literal $($expr:tt)*) => {
|
||
|
if $level <= $crate::log::LOG_LEVEL {
|
||
|
println!("{:?}: {}", $level, format_args!($fmt $($expr)*));
|
||
|
}
|
||
|
};
|
||
|
|
||
|
($level:expr, $($arg:expr),*) => {
|
||
|
if $level <= $crate::log::LOG_LEVEL {
|
||
|
$(println!("[{}{}{}][{:?}]: {} = {:?}", line!(), column!(), file!(), $level, stringify!($arg), $arg);)*
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
macro_rules! err { ($($arg:tt)*) => { $crate::log::log!($crate::log::Level::Err, $($arg)*) }; }
|
||
|
macro_rules! wrn { ($($arg:tt)*) => { $crate::log::log!($crate::log::Level::Wrn, $($arg)*) }; }
|
||
|
macro_rules! inf { ($($arg:tt)*) => { $crate::log::log!($crate::log::Level::Inf, $($arg)*) }; }
|
||
|
macro_rules! dbg { ($($arg:tt)*) => { $crate::log::log!($crate::log::Level::Dbg, $($arg)*) }; }
|
||
|
|
||
|
#[allow(unused_imports)]
|
||
|
pub(crate) use {dbg, err, inf, log, wrn};
|