#![no_std]
pub extern crate log;
mod io;
pub struct Logger;
impl Logger {
#[inline]
pub const fn new() -> Self {
Self
}
#[cfg(feature = "std")]
pub fn set_log_env_or(&self, default_level: log::LevelFilter) {
extern crate std;
fn parse_rust_log(log: &str, default_level: log::LevelFilter) -> log::LevelFilter {
if log.eq_ignore_ascii_case("off") {
log::LevelFilter::Off
} else if log.eq_ignore_ascii_case("error") {
log::LevelFilter::Error
} else if log.eq_ignore_ascii_case("warn") {
log::LevelFilter::Warn
} else if log.eq_ignore_ascii_case("info") {
log::LevelFilter::Info
} else if log.eq_ignore_ascii_case("debug") {
log::LevelFilter::Debug
} else if log.eq_ignore_ascii_case("trace") {
log::LevelFilter::Trace
} else {
default_level
}
}
match std::env::var("RUST_LOG") {
Ok(log) => self.set_max_level(parse_rust_log(&log, default_level)),
Err(_) => self.set_max_level(default_level),
}
}
#[inline]
pub fn set_max_level(&self, level: log::LevelFilter) {
log::set_max_level(level);
}
#[inline]
pub fn set_logger(&'static self) -> Result<(), log::SetLoggerError> {
log::set_logger(self)
}
#[inline]
pub fn set_logger_debug(&'static self) -> Result<(), log::SetLoggerError> {
#[cfg(debug_assertions)]
{
log::set_logger(self)
}
#[cfg(not(debug_assertions))]
{
Ok(())
}
}
}
impl log::Log for Logger {
#[inline(always)]
fn enabled(&self, _: &log::Metadata) -> bool {
true
}
#[inline(always)]
fn log(&self, record: &log::Record) {
Self::print(record);
}
#[inline(always)]
fn flush(&self) {
}
}