kovi/
logger.rs

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
48
49
50
51
52
53
54
55
56
57
58
59
#[cfg(feature = "logger")]
pub fn set_logger() {
    use anstyle::{Color, Style};
    use chrono::Local;
    use log::{warn, Level};
    use std::io::Write;

    let init = env_logger::Builder::from_default_env()
        .format(|buf, record| {
            /* let green = Style::new().fg_color(Some(Color::Rgb((85, 170, 127).into()))); */
            let yellow = Style::new().fg_color(Some(Color::Rgb((255, 170, 127).into())));
            let red = Style::new().fg_color(Some(Color::Rgb((200, 85, 85).into())));

            let timestamp = Local::now().format("%m-%d %H:%M:%S");

            match record.level() {
                Level::Info => {
                    writeln!(buf, "[{timestamp}] {}", record.args())
                }
                Level::Debug => {
                    writeln!(
                        buf,
                        "{yellow}[Debug]{yellow:#} [{timestamp}]: {}",
                        record.args()
                    )
                }
                Level::Warn => {
                    writeln!(
                        buf,
                        "{yellow}[Warn]{yellow:#} [{timestamp}]: {}",
                        record.args()
                    )
                }
                Level::Error => {
                    writeln!(
                        buf,
                        "{red}[Error]{yellow:#} [{timestamp}]: {}",
                        record.args()
                    )
                }
                Level::Trace => {
                    writeln!(buf, "{red}[Trace]{red:#} [{timestamp}]: {}", record.args())
                }
            }
        })
        .try_init();

    if let Err(e) = init {
        warn!(
            "Kovi init env_logger failed: {}. Very likely you've already started a logger",
            e
        );
    }
}

pub fn try_set_logger() {
    #[cfg(feature = "logger")]
    set_logger();
}