mirror of
https://github.com/LearningOS/rust-based-os-comp2022.git
synced 2026-02-08 12:53:34 +08:00
48 lines
1.2 KiB
Rust
48 lines
1.2 KiB
Rust
/*!
|
||
|
||
本模块利用 log crate 为你提供了日志功能,使用方式见 main.rs.
|
||
|
||
*/
|
||
|
||
use log::{self, Level, LevelFilter, Log, Metadata, Record};
|
||
|
||
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) {}
|
||
}
|
||
|
||
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,
|
||
});
|
||
}
|