From 75ef3707032ea0944ccb252977ceb67fe3ed5114 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 24 Jan 2026 11:06:46 +0000 Subject: [PATCH] Add use colours --- frontend/deterministic-tests/src/cli.ts | 2 +- .../src/utils/debugging/log-to-console.ts | 38 ++++++++++++++++++- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/frontend/deterministic-tests/src/cli.ts b/frontend/deterministic-tests/src/cli.ts index faa9460c..4e1463bd 100644 --- a/frontend/deterministic-tests/src/cli.ts +++ b/frontend/deterministic-tests/src/cli.ts @@ -11,7 +11,7 @@ import * as fs from "node:fs"; import { debugging, Logger } from "sync-client"; const logger = new Logger(); -debugging.logToConsole(logger); +debugging.logToConsole(logger, { useColors: true }); process.on("unhandledRejection", (reason) => { logger.error(`Unhandled Rejection: ${reason}`); diff --git a/frontend/sync-client/src/utils/debugging/log-to-console.ts b/frontend/sync-client/src/utils/debugging/log-to-console.ts index 329ddfb0..c8940536 100644 --- a/frontend/sync-client/src/utils/debugging/log-to-console.ts +++ b/frontend/sync-client/src/utils/debugging/log-to-console.ts @@ -2,9 +2,43 @@ import type { Logger, LogLine } from "../../tracing/logger"; import { LogLevel } from "../../tracing/logger"; -export function logToConsole(logger: Logger): void { +const COLORS = { + reset: "\x1b[0m", + red: "\x1b[31m", + yellow: "\x1b[33m", + blue: "\x1b[34m", + gray: "\x1b[90m" +}; + +export function logToConsole( + logger: Logger, + { useColors = true }: { useColors?: boolean } = {} +): void { logger.onLogEmitted.add((logLine: LogLine) => { - const formatted = `${logLine.timestamp.toISOString()} ${logLine.level} ${logLine.message}`; + const timestamp = logLine.timestamp.toISOString(); + const message = logLine.message; + + let color = ""; + let reset = ""; + if (useColors) { + reset = COLORS.reset; + switch (logLine.level) { + case LogLevel.ERROR: + color = COLORS.red; + break; + case LogLevel.WARNING: + color = COLORS.yellow; + break; + case LogLevel.INFO: + color = COLORS.blue; + break; + case LogLevel.DEBUG: + color = COLORS.gray; + break; + } + } + + const formatted = `${timestamp} ${color}${logLine.level}${reset} ${message}`; switch (logLine.level) { case LogLevel.ERROR: