use rat_logger::{error, warn, info, debug, trace};
use rat_logger::{Level, LevelFilter};
use rat_logger::LoggerBuilder;
use std::io::Write;
use chrono::Local;
fn themed_format(
buf: &mut dyn Write,
record: &rat_logger::config::Record
) -> std::io::Result<()> {
let level = record.metadata.level;
let (level_color, level_bg, level_icon) = match level {
Level::Error => ("\x1b[97m", "\x1b[41m", "❌"), Level::Warn => ("\x1b[30m", "\x1b[43m", "⚠️ "), Level::Info => ("\x1b[97m", "\x1b[44m", "ℹ️ "), Level::Debug => ("\x1b[30m", "\x1b[46m", "🔧"), Level::Trace => ("\x1b[97m", "\x1b[45m", "🔍"), };
let timestamp_color = "\x1b[90m"; let message_color = "\x1b[37m"; let reset = "\x1b[0m";
let now = Local::now();
let timestamp = now.format("%H:%M:%S%.3f");
writeln!(
buf,
"{}{} {}{}{:5}{} {} {}{}{}",
timestamp_color, timestamp, level_color, level_bg, level, reset, level_icon, message_color, record.args, reset )
}
fn main() {
let _ = LoggerBuilder::new()
.with_level(LevelFilter::Trace) .add_terminal_with_config(rat_logger::handler::term::TermConfig::default())
.init_global_logger();
error!("这是一个错误消息");
warn!("这是一个警告消息");
info!("这是一个信息消息");
debug!("这是一个调试消息");
trace!("这是一个追踪消息");
std::thread::spawn(|| {
info!("来自另一个线程的日志");
}).join().unwrap();
}