util/
logger.rs

1extern crate log;
2extern crate ansi_term;
3
4use ansi_term::Colour;
5
6use error::YabsError;
7use log::{LogLevel, LogLevelFilter, LogMetadata, LogRecord};
8
9pub struct Logger;
10
11impl Logger {
12    pub fn init() -> Result<(), YabsError> {
13        Ok(log::set_logger(|max_log_level| {
14                               max_log_level.set(LogLevelFilter::Info);
15                               Box::new(Logger)
16                           })?)
17    }
18}
19
20impl log::Log for Logger {
21    fn enabled(&self, metadata: &LogMetadata) -> bool {
22        metadata.level() <= LogLevel::Info
23    }
24
25    fn log(&self, record: &LogRecord) {
26        if self.enabled(record.metadata()) {
27            match record.level() {
28                LogLevel::Error => {
29                    println!("{}: {}", Colour::Red.bold().paint("error"), record.args());
30                },
31                LogLevel::Info => {
32                    println!("{}", record.args());
33                },
34                _ => {},
35            };
36        }
37    }
38}