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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
pub mod log {
    extern crate chrono;
    extern crate colored;

    use chrono::prelude::*;
    use colored::*;
    use std::env;

    pub struct Logger {
        pkg: String,
        name: String,
    }

    impl Logger {
        fn new(name: &str) -> Logger {
            Logger {
                pkg: env!("CARGO_PKG_NAME").to_string(),
                name: name.to_string(),
            }
        }

        pub fn get_name(&self) -> String {
            return format!("{}", self.name);
        }

        pub fn info(&self, cont: &str) {
            println!(
                "{} [{}:{}] {}: {}",
                get_current_time(),
                self.pkg.green().bold(),
                self.name.blue(),
                "INFO".blue(),
                cont.to_string()
            );
        }

        pub fn error(&self, cont: &str) {
            println!(
                "{} [{}:{}] {}: {}",
                get_current_time(),
                self.pkg.green().bold(),
                self.name.blue(),
                "ERROR".red(),
                cont.to_string()
            );
        }
        pub fn fatal(&self, cont: &str) {
            println!(
                "{} [{}:{}] {}: {}",
                get_current_time(),
                self.pkg.green().bold(),
                self.name.blue(),
                "FATAL".red().bold(),
                cont.to_string()
            );
        }
        pub fn debug(&self, cont: &str) {
            println!(
                "{} [{}:{}] {}: {}",
                get_current_time(),
                self.pkg.green().bold(),
                self.name.blue(),
                "DEBUG".magenta(),
                cont.to_string()
            );
        }
        pub fn warn(&self, cont: &str) {
            println!(
                "{} [{}:{}] {}: {}",
                get_current_time(),
                self.pkg.green().bold(),
                self.name.blue(),
                "WARN".yellow(),
                cont.to_string()
            );
        }
        pub fn custom(&self, t: &str, cont: &str) {
            println!(
                "[{}:{}] {}: {}",
                self.pkg,
                self.name,
                t.to_string(),
                cont.to_string()
            );
        }
    }

    pub fn get(name: &str) -> Logger {
        let logger = Logger::new(name);
        return logger;
    }

    pub fn get_current_time() -> String {
        let local_time = Local::now();
        return local_time.format("%Y-%m-%d %H:%M:%S").to_string();
    }
}