2017-03-17 10:03:07 +00:00
|
|
|
use log::{self, LogRecord, LogLevel, LogMetadata, LogLevelFilter};
|
|
|
|
pub use log::SetLoggerError;
|
|
|
|
|
2017-03-18 16:22:11 +00:00
|
|
|
use ansi_term::{Color, Style};
|
|
|
|
|
|
|
|
|
2017-03-17 10:03:07 +00:00
|
|
|
struct Logger;
|
|
|
|
|
|
|
|
impl log::Log for Logger {
|
|
|
|
fn enabled(&self, metadata: &LogMetadata) -> bool {
|
2017-03-30 09:02:36 +00:00
|
|
|
metadata.level() <= LogLevel::Info
|
2017-03-17 10:03:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
fn log(&self, record: &LogRecord) {
|
|
|
|
if self.enabled(record.metadata()) {
|
2017-03-18 16:22:11 +00:00
|
|
|
let lvl = record.level();
|
|
|
|
match lvl {
|
2017-03-20 17:11:03 +00:00
|
|
|
LogLevel::Error => println!("{}: {}", Color::Red.bold().paint("error"), record.args()),
|
|
|
|
LogLevel::Warn => println!("{}: {}", Color::Yellow.bold().paint("warning"), record.args()),
|
|
|
|
LogLevel::Info => println!("{}: {}", Color::Green.bold().paint("info"), record.args()),
|
|
|
|
LogLevel::Debug => println!("{}: {}", Style::new().bold().paint("debug"), record.args()),
|
|
|
|
LogLevel::Trace => println!("{}: {}", "trace", record.args())
|
2017-03-18 16:22:11 +00:00
|
|
|
}
|
2017-03-17 10:03:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn init() -> Result<(), SetLoggerError> {
|
|
|
|
log::set_logger(|max_log_level| {
|
2017-03-30 09:02:36 +00:00
|
|
|
max_log_level.set(LogLevelFilter::Info);
|
2017-03-17 10:03:07 +00:00
|
|
|
Box::new(Logger)
|
|
|
|
})
|
|
|
|
}
|