diff --git a/run/core/post-startup-monitor.ts b/run/core/post-startup-monitor.ts index d48f212..f60d96b 100644 --- a/run/core/post-startup-monitor.ts +++ b/run/core/post-startup-monitor.ts @@ -137,6 +137,13 @@ const SUPPRESS_PATTERNS = [ /punycode.*deprecated/i, /\(node:\d+\)\s+Warning:/, /DeprecationWarning/, + // Suppress verbose axios/network object dumps + /\[Symbol\(/, + /_idleTimeout:/, + /_idlePrev:/, + /kOutHeaders/, + /\[Object: null prototype\]/, + /axios\/\d+\.\d+/, ]; // ============================================================================= @@ -200,8 +207,8 @@ export class PostStartupMonitor { * Process service output - called by ServiceManager.onServiceOutput */ processOutput(serviceId: string, output: string, isError: boolean): void { - // Suppress all output during restart to avoid log flood - if (this.isRestarting) { + // Suppress all output during restart or shutdown to avoid log flood + if (this.isRestarting || this.isShuttingDown) { return; } @@ -662,7 +669,22 @@ export class PostStartupMonitor { // --------------------------------------------------------------------------- private shouldSuppress(output: string): boolean { - return SUPPRESS_PATTERNS.some(pattern => pattern.test(output)); + // Suppress known noise patterns + if (SUPPRESS_PATTERNS.some(pattern => pattern.test(output))) { + return true; + } + + // Suppress lines that look like object dump fragments + // (indented lines with property names ending in colon or brackets) + const trimmed = output.trim(); + if (/^\s*[\w_]+:\s*[\[\{]/.test(trimmed) && trimmed.length < 60) { + return true; + } + if (/^\s*[\}\]],?\s*$/.test(trimmed)) { + return true; + } + + return false; } private matchesPatterns(output: string, patterns: RegExp[]): boolean {