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 }