72 lines
1.5 KiB
Plaintext
72 lines
1.5 KiB
Plaintext
use <std::fmt>;
|
|
|
|
pub trait TestLogging<T: fmt::Display>: fmt::Display {
|
|
String get();
|
|
}
|
|
|
|
pub enum LogLevel {
|
|
Info,
|
|
Warning,
|
|
Error,
|
|
}
|
|
|
|
impl fmt::Display for LogLevel {
|
|
std::fmt::Result fmt(self*, std::fmt::Formatter<'_> mut* f) {
|
|
match (self) {
|
|
LogLevel::Info => {
|
|
return write!(f, "[INFO]");
|
|
}
|
|
|
|
LogLevel::Warning => {
|
|
return write!(f, "[WARN]");
|
|
}
|
|
|
|
LogLevel::Error => {
|
|
return write!(f, "[ERROR]");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
pub class Logger {
|
|
String prefix;
|
|
|
|
pub constructor(str* prefix) {
|
|
self.prefix = prefix.to_string();
|
|
}
|
|
|
|
pub void info(self*, str* message) {
|
|
self.log(LogLevel::Info, message);
|
|
}
|
|
|
|
pub void warning(self*, str* message) {
|
|
self.log(LogLevel::Warning, message);
|
|
}
|
|
|
|
pub void error(self*, str* message) {
|
|
self.log(LogLevel::Error, message);
|
|
}
|
|
|
|
void log(self*, LogLevel level, str* message) {
|
|
match(level) {
|
|
LogLevel::Info => {
|
|
println!("{level} {} {}", self.prefix, message);
|
|
}
|
|
|
|
LogLevel::Warning => {
|
|
println!("{level} {} {}", self.prefix, message);
|
|
}
|
|
|
|
LogLevel::Error => {
|
|
println!("{level} {} {}", self.prefix, message);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl fmt::Display {
|
|
std::fmt::Result fmt(self*, std::fmt::Formatter<'_> mut* f) {
|
|
return write!(f, "logger ({})", self.prefix);
|
|
}
|
|
}
|
|
}
|