1use log::{Level, Log, Metadata, Record};
5use std::io::Write;
6use termcolor::{Color, ColorChoice, ColorSpec, StandardStream, WriteColor};
7
8pub struct Logger;
9
10impl Log for Logger {
11 fn enabled(&self, metadata: &Metadata) -> bool {
12 metadata.level() <= Level::Info
13 }
14
15 fn log(&self, record: &Record) {
16 if !self.enabled(record.metadata()) {
17 return;
18 }
19
20 if record.metadata().level() == Level::Warn {
21 let mut stderr = StandardStream::stderr(ColorChoice::Always);
22
23 stderr
24 .set_color(ColorSpec::new().set_fg(Some(Color::Red)))
25 .unwrap();
26 write!(&mut stderr, "{}", record.args()).unwrap();
27
28 stderr.set_color(ColorSpec::new().set_fg(None)).unwrap();
29 writeln!(&mut stderr).unwrap();
30
31 return;
32 }
33
34 println!("{}", record.args());
35 }
36
37 fn flush(&self) {}
38}