From 8934422a4d06fd7a81deca7519d3ac1fa9d70a68 Mon Sep 17 00:00:00 2001 From: Aditya Gupta Date: Thu, 9 Jul 2026 09:44:00 +0530 Subject: [PATCH] feat: Add logging to file for a CLI run --- cli/src/index.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/cli/src/index.ts b/cli/src/index.ts index a5d6f26..a73fe88 100644 --- a/cli/src/index.ts +++ b/cli/src/index.ts @@ -88,6 +88,51 @@ async function runAliasResolution( async function main() { const args = process.argv.slice(2); + + const logFileIndex = args.indexOf("--log-file"); + let logStream: fs.WriteStream | undefined; + if (logFileIndex !== -1 && args[logFileIndex + 1]) { + const logFilePath = path.resolve(args[logFileIndex + 1]); + logStream = fs.createWriteStream(logFilePath, { flags: "w", encoding: "utf-8" }); + + // Monkeypatch console.log + const originalLog = console.log; + console.log = (...messageArgs: unknown[]) => { + originalLog(...messageArgs); + const text = messageArgs.map(arg => { + if (typeof arg === "object" && arg !== null) { + try { + return JSON.stringify(arg, null, 2); + } catch { + return String(arg); + } + } + return String(arg); + }).join(" ") + "\n"; + logStream?.write(text); + }; + + // Monkeypatch console.error + const originalError = console.error; + console.error = (...messageArgs: unknown[]) => { + originalError(...messageArgs); + const text = messageArgs.map(arg => { + if (typeof arg === "object" && arg !== null) { + try { + return JSON.stringify(arg, null, 2); + } catch { + return String(arg); + } + } + return String(arg); + }).join(" ") + "\n"; + logStream?.write("[ERROR] " + text); + }; + + process.on("exit", () => { + logStream?.end(); + }); + } const scenarioArgIndex = args.indexOf("--scenario"); const scenarioPath = scenarioArgIndex !== -1