1pub trait Logger {
6 fn log(&self, level: LogLevel, message: &str);
12
13 fn error(&self, message: &str) {
15 self.log(LogLevel::Error, message);
16 }
17
18 fn warn(&self, message: &str) {
20 self.log(LogLevel::Warn, message);
21 }
22
23 fn info(&self, message: &str) {
25 self.log(LogLevel::Info, message);
26 }
27
28 fn debug(&self, message: &str) {
30 self.log(LogLevel::Debug, message);
31 }
32
33 fn trace(&self, message: &str) {
35 self.log(LogLevel::Trace, message);
36 }
37}
38
39#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
41pub enum LogLevel {
42 Error = 1,
44 Warn = 2,
46 Info = 3,
48 Debug = 4,
50 Trace = 5,
52}
53
54impl LogLevel {
55 pub fn as_str(&self) -> &'static str {
57 match self {
58 LogLevel::Error => "ERROR",
59 LogLevel::Warn => "WARN",
60 LogLevel::Info => "INFO",
61 LogLevel::Debug => "DEBUG",
62 LogLevel::Trace => "TRACE",
63 }
64 }
65}