From 2210118596084fee4336f46a79d3f76a0efe7743 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Tue, 13 Jan 2026 10:05:45 +0100 Subject: [PATCH] Added ANSI colors for log level formatting --- .../Tools/TerminalLogger.cs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Tools/TerminalLogger.cs b/app/MindWork AI Studio/Tools/TerminalLogger.cs index 88be6f19..65075d4a 100644 --- a/app/MindWork AI Studio/Tools/TerminalLogger.cs +++ b/app/MindWork AI Studio/Tools/TerminalLogger.cs @@ -11,6 +11,13 @@ public sealed class TerminalLogger() : ConsoleFormatter(FORMATTER_NAME) private static RustService? RUST_SERVICE; + // ANSI color codes for log levels + private const string ANSI_RESET = "\x1b[0m"; + private const string ANSI_GRAY = "\x1b[90m"; // Trace, Debug + private const string ANSI_GREEN = "\x1b[32m"; // Information + private const string ANSI_YELLOW = "\x1b[33m"; // Warning + private const string ANSI_RED = "\x1b[91m"; // Error, Critical + /// /// Sets the Rust service for logging events. /// @@ -19,7 +26,7 @@ public sealed class TerminalLogger() : ConsoleFormatter(FORMATTER_NAME) { RUST_SERVICE = service; } - + public override void Write(in LogEntry logEntry, IExternalScopeProvider? scopeProvider, TextWriter textWriter) { var message = logEntry.Formatter(logEntry.State, logEntry.Exception); @@ -27,8 +34,9 @@ public sealed class TerminalLogger() : ConsoleFormatter(FORMATTER_NAME) var logLevel = logEntry.LogLevel.ToString(); var category = logEntry.Category; var exception = logEntry.Exception?.ToString(); + var colorCode = GetColorForLogLevel(logEntry.LogLevel); - textWriter.Write($"[{timestamp}] {logLevel} [{category}] {message}"); + textWriter.Write($"{colorCode}[{timestamp}] {logLevel} [{category}]{ANSI_RESET} {message}"); if (exception is not null) textWriter.Write($" Exception: {exception}"); @@ -37,4 +45,15 @@ public sealed class TerminalLogger() : ConsoleFormatter(FORMATTER_NAME) // Send log event to Rust via API (fire-and-forget): RUST_SERVICE?.LogEvent(timestamp, logLevel, category, message, exception); } + + private static string GetColorForLogLevel(LogLevel logLevel) => logLevel switch + { + LogLevel.Trace => ANSI_GRAY, + LogLevel.Debug => ANSI_GRAY, + LogLevel.Information => ANSI_GREEN, + LogLevel.Warning => ANSI_YELLOW, + LogLevel.Error => ANSI_RED, + LogLevel.Critical => ANSI_RED, + _ => ANSI_RESET + }; } \ No newline at end of file