2018-02-19 22:31:58 +00:00
|
|
|
use log;
|
2017-03-17 10:03:07 +00:00
|
|
|
pub use log::SetLoggerError;
|
|
|
|
|
2017-03-18 16:22:11 +00:00
|
|
|
use ansi_term::{Color, Style};
|
|
|
|
|
|
|
|
|
2018-02-19 22:31:58 +00:00
|
|
|
struct Logger(log::Level);
|
2017-03-17 10:03:07 +00:00
|
|
|
|
|
|
|
impl log::Log for Logger {
|
2018-02-19 22:31:58 +00:00
|
|
|
fn enabled(&self, metadata: &log::Metadata) -> bool {
|
2017-04-09 10:04:28 +00:00
|
|
|
metadata.level() <= self.0
|
2017-03-17 10:03:07 +00:00
|
|
|
}
|
|
|
|
|
2018-02-19 22:31:58 +00:00
|
|
|
fn flush(&self) {}
|
|
|
|
|
|
|
|
fn log(&self, record: &log::Record) {
|
2017-03-17 10:03:07 +00:00
|
|
|
if self.enabled(record.metadata()) {
|
2017-04-09 10:04:28 +00:00
|
|
|
match record.level() {
|
2018-02-19 22:31:58 +00:00
|
|
|
log::Level::Error => {
|
2018-03-03 16:25:05 +00:00
|
|
|
eprintln!("{}: {}", Color::Red.bold().paint("error"), record.args())
|
2017-07-21 09:21:59 +00:00
|
|
|
}
|
2018-02-19 22:31:58 +00:00
|
|
|
log::Level::Warn => {
|
2018-03-03 16:25:05 +00:00
|
|
|
eprintln!(
|
2017-07-21 09:21:59 +00:00
|
|
|
"{}: {}",
|
|
|
|
Color::Yellow.bold().paint("warning"),
|
|
|
|
record.args()
|
|
|
|
)
|
|
|
|
}
|
2018-02-19 22:31:58 +00:00
|
|
|
log::Level::Info => {
|
2018-03-03 16:25:05 +00:00
|
|
|
eprintln!("{}: {}", Color::Green.bold().paint("info"), record.args())
|
2017-07-21 09:21:59 +00:00
|
|
|
}
|
2018-02-19 22:31:58 +00:00
|
|
|
log::Level::Debug => {
|
2018-03-03 16:25:05 +00:00
|
|
|
eprintln!("{}: {}", Style::new().bold().paint("debug"), record.args())
|
2017-07-21 09:21:59 +00:00
|
|
|
}
|
2018-03-03 16:25:05 +00:00
|
|
|
log::Level::Trace => eprintln!("{}: {}", "trace", record.args()),
|
2017-03-18 16:22:11 +00:00
|
|
|
}
|
2017-03-17 10:03:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-02-19 22:31:58 +00:00
|
|
|
pub fn init(level: log::Level) -> Result<(), SetLoggerError> {
|
|
|
|
let logger = Logger(level);
|
|
|
|
log::set_max_level(level.to_level_filter());
|
|
|
|
log::set_boxed_logger(Box::new(logger))
|
2017-03-17 10:03:07 +00:00
|
|
|
}
|