use super::log_utils::timestamp;
trait Colorize {
fn into_cyan(self) -> String;
fn into_gray(self) -> String;
fn into_white(self) -> String;
fn into_green(self) -> String;
fn into_yellow(self) -> String;
fn into_crimson(self) -> String;
fn into_red(self) -> String;
fn into_emergency(self) -> String;
}
impl Colorize for String{
fn into_cyan(self) -> String {
format!("\x1b[96m{}\x1b[0m", self)
}
fn into_white(self) -> String {
format!("\x1b[97m{}\x1b[0m", self)
}
fn into_gray(self) -> String {
format!("\x1b[90m{}\x1b[0m", self)
}
fn into_green(self) -> String {
format!("\x1b[92m{}\x1b[0m", self)
}
fn into_yellow(self) -> String {
format!("\x1b[93m{}\x1b[0m", self)
}
fn into_crimson(self) -> String {
format!("\x1b[31m{}\x1b[0m", self)
}
fn into_red(self) -> String {
format!("\x1b[91m{}\x1b[0m", self)
}
fn into_emergency(self) -> String {
format!("\x1b[33m\x1b[101m{}\x1b[0m", self)
}
}
impl Colorize for &str{
fn into_cyan(self) -> String {
self.to_string().into_cyan()
}
fn into_white(self) -> String {
self.to_string().into_white()
}
fn into_gray(self) -> String {
self.to_string().into_gray()
}
fn into_green(self) -> String {
self.to_string().into_green()
}
fn into_yellow(self) -> String {
self.to_string().into_yellow()
}
fn into_crimson(self) -> String {
self.to_string().into_crimson()
}
fn into_red(self) -> String {
self.to_string().into_red()
}
fn into_emergency(self) -> String {
self.to_string().into_emergency()
}
}
pub fn trace<S: Into<String>>(mesg: S) {
println!("[{}] [{}] {}", timestamp().into_cyan(), "TRACE".into_gray(), mesg.into().into_gray());
}
pub fn debug<S: Into<String>>(mesg: S) {
println!("[{}] [{}] {}", timestamp().into_cyan(), "DEBUG".into_gray(), mesg.into());
}
pub fn info<S: Into<String>>(mesg: S) {
println!("[{}] [{}] {}", timestamp().into_cyan(), "INFO".into_white(), mesg.into());
}
pub fn notice<S: Into<String>>(mesg: S) {
println!("[{}] [{}] {}", timestamp().into_cyan(), "NOTICE".into_green(), mesg.into());
}
pub fn warn<S: Into<String>>(mesg: S) {
println!("[{}] [{}] {}", timestamp().into_cyan(), "WARN".into_yellow(), mesg.into());
}
pub fn error<S: Into<String>>(mesg: S) {
println!("[{}] [{}] {}", timestamp().into_cyan(), "ERROR".into_crimson(), mesg.into());
}
pub fn critical<S: Into<String>>(mesg: S) {
println!("[{}] [{}] {}", timestamp().into_cyan(), "CRITICAL".into_red(), mesg.into());
}
pub fn emergency<S: Into<String>>(mesg: S) {
println!("[{}] [{}] {}", timestamp().into_cyan(), "EMERGENCY".into_emergency(), mesg.into().into_crimson());
}