use chrono::Local;
use colored::*;
pub struct Logger {}
#[allow(dead_code)]
impl Logger {
fn get_timestamp() -> String {
format!("{}", Local::now())
}
fn write_log(header: ColoredString, message: &str) {
println!("{}: [{}] {}", Logger::get_timestamp(), header, message);
}
pub fn info(message: String) {
Logger::write_log("INFO".blue(), &message);
}
pub fn warn(message: String) {
Logger::write_log("WARN".yellow(), &message);
}
pub fn error(message: String) -> ! {
eprintln!(
"{}: [{}] {}",
Logger::get_timestamp(),
"ERROR".red(),
message
);
panic!("{}", message)
}
}
#[macro_export]
macro_rules! info {
($($arg: tt)*) => ($crate::logger::Logger::info(format!($($arg)*)));
}
#[macro_export]
macro_rules! warn {
($($arg: tt)*) => ($crate::logger::Logger::warn(format!($($arg)*)));
}
#[macro_export]
macro_rules! error {
($($arg: tt)*) => ($crate::logger::Logger::error(format!($($arg)*)));
}