mirror of
https://github.com/LearningOS/rust-based-os-comp2022.git
synced 2026-02-07 20:34:08 +08:00
46 lines
1.2 KiB
Rust
46 lines
1.2 KiB
Rust
//! Global logger
|
|
|
|
use log::{self, Level, LevelFilter, Log, Metadata, Record};
|
|
|
|
/// a simple logger
|
|
struct SimpleLogger;
|
|
|
|
impl Log for SimpleLogger {
|
|
fn enabled(&self, _metadata: &Metadata) -> bool {
|
|
true
|
|
}
|
|
fn log(&self, record: &Record) {
|
|
if !self.enabled(record.metadata()) {
|
|
return;
|
|
}
|
|
let color = match record.level() {
|
|
Level::Error => 31, // Red
|
|
Level::Warn => 93, // BrightYellow
|
|
Level::Info => 34, // Blue
|
|
Level::Debug => 32, // Green
|
|
Level::Trace => 90, // BrightBlack
|
|
};
|
|
println!(
|
|
"\u{1B}[{}m[{:>5}] {}\u{1B}[0m",
|
|
color,
|
|
record.level(),
|
|
record.args(),
|
|
);
|
|
}
|
|
fn flush(&self) {}
|
|
}
|
|
|
|
/// initiate logger
|
|
pub fn init() {
|
|
static LOGGER: SimpleLogger = SimpleLogger;
|
|
log::set_logger(&LOGGER).unwrap();
|
|
log::set_max_level(match option_env!("LOG") {
|
|
Some("ERROR") => LevelFilter::Error,
|
|
Some("WARN") => LevelFilter::Warn,
|
|
Some("INFO") => LevelFilter::Info,
|
|
Some("DEBUG") => LevelFilter::Debug,
|
|
Some("TRACE") => LevelFilter::Trace,
|
|
_ => LevelFilter::Off,
|
|
});
|
|
}
|