From 628f853c855b7438990096e15b103f499df3c1a0 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Wed, 14 Jan 2026 09:33:03 -0300 Subject: [PATCH] Add ANSI colors to log levels: red E, yellow W, green I, cyan D --- src/logging.rs | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/logging.rs b/src/logging.rs index 4441045..703934b 100644 --- a/src/logging.rs +++ b/src/logging.rs @@ -2,13 +2,20 @@ use env_logger::fmt::Formatter; use log::Record; use std::io::Write; +// ANSI color codes +const RED: &str = "\x1b[31m"; +const YELLOW: &str = "\x1b[33m"; +const GREEN: &str = "\x1b[32m"; +const CYAN: &str = "\x1b[36m"; +const RESET: &str = "\x1b[0m"; + pub fn compact_format(buf: &mut Formatter, record: &Record) -> std::io::Result<()> { - let level = match record.level() { - log::Level::Error => "E", - log::Level::Warn => "W", - log::Level::Info => "I", - log::Level::Debug => "D", - log::Level::Trace => "T", + let (level, color) = match record.level() { + log::Level::Error => ("E", RED), + log::Level::Warn => ("W", YELLOW), + log::Level::Info => ("I", GREEN), + log::Level::Debug => ("D", CYAN), + log::Level::Trace => ("T", ""), }; let now = chrono::Local::now(); @@ -21,7 +28,11 @@ pub fn compact_format(buf: &mut Formatter, record: &Record) -> std::io::Result<( target }; - writeln!(buf, "{} {} {}:{}", timestamp, level, module, record.args()) + if color.is_empty() { + writeln!(buf, "{} {} {}:{}", timestamp, level, module, record.args()) + } else { + writeln!(buf, "{} {}{}{} {}:{}", timestamp, color, level, RESET, module, record.args()) + } } pub fn init_compact_logger(default_filter: &str) {