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
41
42
43
44
45
46
47
use log_hal::Log;
use log_hal::Level;
use core::fmt::Arguments;
use time::PrimitiveDateTime;
use colored::Colorize;

pub struct LogStd {
    tag: &'static str,
}

impl Log for LogStd {
    fn tag(&mut self, t: &'static str) {
        self.tag = t;
    }

    fn log(&self, level: Level, args: &Arguments) {
        let r = format!("{} [{}] {}", PrimitiveDateTime::now().format("%c"), self.tag, args);
        match level {
            Level::Info => println!("{}", r.white()),
            Level::Warn => println!("{}", r.yellow()),
            Level::Debug => println!("{}", r.green()),
            Level::Error => println!("{}", r.red()),
            Level::Panic => println!("{}", r.bright_red()),
        }
    }

}

impl Default for LogStd {
    fn default() -> Self {
        LogStd {
            tag: ""
        }
    }

}

#[test]
fn test() {
    let mut logger = LogStd::default();
    logger.tag("arch");
    logger.debug(&format_args!("{}", "hello"));
    logger.info(&format_args!("{}", "hello"));
    logger.warn(&format_args!("{}", "hello"));
    logger.error(&format_args!("{}", "hello"));
    // logger.panic(&format_args!("{}", "hello"));
}