#[macro_export]
macro_rules! log {
($($arg:tt)*) => {{
use chrono::Local;
use std::fs::OpenOptions;
use std::io::Write;
let log_message = format!($($arg)*);
let now = Local::now();
let formatted = format!("{}", now.format("%Y-%m-%d %H:%M:%S")) ;
let log_line = format!("[{}] {}\n", formatted, log_message);
println!("{log_line}");
if let Ok(mut file) = OpenOptions::new()
.append(true)
.create(true)
.open("file.log")
{
if let Err(e) = writeln!(file, "{}", log_line) {
eprintln!("Error writing to log file: {}", e);
}
} else {
eprintln!("Error opening log file!");
}
}};
}
#[macro_export]
macro_rules! logd {
($($arg:tt)*) => {{
use chrono::Local;
let log_message = format!($($arg)*);
let now = Local::now();
let formatted = format!("{}", now.format("%Y-%m-%d %H:%M:%S")) ;
let log_line = format!("[{}] {}\n", formatted, log_message);
println!("{log_line}");
}};
}
#[macro_export]
macro_rules! logw {
($($arg:tt)*) => {{
use chrono::Local;
use std::fs::OpenOptions;
use std::io::Write;
let log_message = format!($($arg)*);
let now = Local::now();
let formatted = format!("{}", now.format("%Y-%m-%d %H:%M:%S")) ;
let log_line = format!("[{}] {}\n", formatted, log_message);
if let Ok(mut file) = OpenOptions::new()
.append(true)
.create(true)
.open("file.log")
{
if let Err(e) = writeln!(file, "{}", log_line) {
eprintln!("Error writing to log file: {}", e);
}
} else {
eprintln!("Error opening log file!");
}
}};
}