use std::collections::HashMap;
use chrono::prelude::*;
pub struct Log;
impl Log {
pub fn log(text: &str, kwargs: HashMap<&str, &str>) {
let gray = "\x1b[90m"; let reset = "\x1b[0m";
let log_message = format!(
"{} {}",
text,
kwargs
.iter()
.map(|(key, value)| format!("{}{}={}{}", gray, key, reset, value))
.collect::<Vec<String>>()
.join(" ")
);
let timestamp = Log::get_timestamp();
println!("{} {}", timestamp, log_message);
}
fn get_timestamp() -> String {
let dt = Local::now();
dt.format("%Y-%m-%d %H:%M:%S").to_string()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_log_function() {
let mut kwargs = HashMap::new();
kwargs.insert("key1", "value1");
kwargs.insert("key2", "value2");
Log::log("Test Logging:", kwargs);
}
#[test]
fn test_timestamp_function() {
let timestamp = Log::get_timestamp();
}
}