the aliasing svg renderer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use comat::{cformat_args, cprintln};
use log::{Level, Metadata, Record};

pub struct Logger {}

pub fn init(level: Level) {
    static LOGGER: Logger = Logger {};
    log::set_logger(&LOGGER)
        .map(|()| log::set_max_level(level.to_level_filter()))
        .unwrap();
}

impl log::Log for Logger {
    fn enabled(&self, _: &Metadata) -> bool {
        true
    }

    fn log(&self, record: &Record) {
        match record.level() {
            Level::Info => println!("{}", record.args()),
            l => {
                cprintln!(
                    "[{} {:bold_blue}:{:blue}] {}",
                    match l {
                        Level::Error => cformat_args!("{bold_red}err{reset}"),
                        Level::Warn => cformat_args!("{bold_yellow}wrn{reset}"),
                        Level::Trace => cformat_args!("{magenta}trc{reset}"),
                        Level::Debug => cformat_args!("{green}dbg{reset}"),
                        Level::Info => cformat_args!("{blue}inf{reset}"),
                    },
                    record.file().unwrap_or("<source>"),
                    record.line().unwrap_or(0),
                    record.args(),
                )
            }
        }
    }

    fn flush(&self) {}
}