log_std/
lib.rs

1use log_hal::Log;
2use log_hal::Level;
3use core::fmt::Arguments;
4use time::PrimitiveDateTime;
5use colored::Colorize;
6
7pub struct LogStd {
8    tag: &'static str,
9}
10
11impl Log for LogStd {
12    fn tag(&mut self, t: &'static str) {
13        self.tag = t;
14    }
15
16    fn log(&self, level: Level, args: &Arguments) {
17        let r = format!("{} [{}] {}", PrimitiveDateTime::now().format("%c"), self.tag, args);
18        match level {
19            Level::Info => println!("{}", r.white()),
20            Level::Warn => println!("{}", r.yellow()),
21            Level::Debug => println!("{}", r.green()),
22            Level::Error => println!("{}", r.red()),
23            Level::Panic => println!("{}", r.bright_red()),
24        }
25    }
26
27}
28
29impl Default for LogStd {
30    fn default() -> Self {
31        LogStd {
32            tag: ""
33        }
34    }
35
36}
37
38#[test]
39fn test() {
40    let mut logger = LogStd::default();
41    logger.tag("arch");
42    logger.debug(&format_args!("{}", "hello"));
43    logger.info(&format_args!("{}", "hello"));
44    logger.warn(&format_args!("{}", "hello"));
45    logger.error(&format_args!("{}", "hello"));
46    // logger.panic(&format_args!("{}", "hello"));
47}