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}