66 lines
1.8 KiB
Rust
66 lines
1.8 KiB
Rust
use localtime::LocalTime;
|
|
use log::*;
|
|
|
|
pub struct Logger {
|
|
level: Level,
|
|
}
|
|
|
|
impl Logger {
|
|
pub fn new(level: Level) -> Self {
|
|
Self { level }
|
|
}
|
|
}
|
|
|
|
impl Log for Logger {
|
|
fn enabled(&self, metadata: &Metadata) -> bool {
|
|
metadata.level() <= self.level
|
|
}
|
|
|
|
fn log(&self, record: &Record) {
|
|
use colored::Colorize;
|
|
let time = LocalTime::now().as_secs();
|
|
|
|
match record.target() {
|
|
"test" => {
|
|
println!(
|
|
"{time} {} {}",
|
|
"test:".cyan(),
|
|
record.args().to_string().cyan()
|
|
)
|
|
}
|
|
"sim" => {
|
|
println!(
|
|
"{time} {} {}",
|
|
"sim:".bold(),
|
|
record.args().to_string().bold()
|
|
)
|
|
}
|
|
target => {
|
|
if self.enabled(record.metadata()) {
|
|
let current = std::thread::current();
|
|
let msg = format!("{:>10} {}", format!("{target}:"), record.args());
|
|
let time = LocalTime::now().as_secs();
|
|
let s = if let Some(name) = current.name() {
|
|
format!("{time} {name:<16} {msg}")
|
|
} else {
|
|
format!("{time} {msg}")
|
|
};
|
|
match record.level() {
|
|
log::Level::Warn => {
|
|
println!("{}", s.yellow());
|
|
}
|
|
log::Level::Error => {
|
|
println!("{}", s.red());
|
|
}
|
|
_ => {
|
|
println!("{}", s.dimmed());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fn flush(&self) {}
|
|
}
|