fix: serialize claude cli runs
This commit is contained in:
@@ -57,6 +57,7 @@ let cachedConsoleSettings: ConsoleSettings | null = null;
|
||||
let overrideSettings: LoggerSettings | null = null;
|
||||
let consolePatched = false;
|
||||
let forceConsoleToStderr = false;
|
||||
let consoleSubsystemFilter: string[] | null = null;
|
||||
let rawConsole: {
|
||||
log: typeof console.log;
|
||||
info: typeof console.info;
|
||||
@@ -258,6 +259,27 @@ export function routeLogsToStderr(): void {
|
||||
forceConsoleToStderr = true;
|
||||
}
|
||||
|
||||
export function setConsoleSubsystemFilter(filters?: string[] | null): void {
|
||||
if (!filters || filters.length === 0) {
|
||||
consoleSubsystemFilter = null;
|
||||
return;
|
||||
}
|
||||
const normalized = filters
|
||||
.map((value) => value.trim())
|
||||
.filter((value) => value.length > 0);
|
||||
consoleSubsystemFilter = normalized.length > 0 ? normalized : null;
|
||||
}
|
||||
|
||||
export function shouldLogSubsystemToConsole(subsystem: string): boolean {
|
||||
if (!consoleSubsystemFilter || consoleSubsystemFilter.length === 0) {
|
||||
return true;
|
||||
}
|
||||
return consoleSubsystemFilter.some(
|
||||
(prefix) =>
|
||||
subsystem === prefix || subsystem.startsWith(`${prefix}/`),
|
||||
);
|
||||
}
|
||||
|
||||
const SUPPRESSED_CONSOLE_PREFIXES = [
|
||||
"Closing session:",
|
||||
"Opening session:",
|
||||
@@ -536,6 +558,7 @@ export function createSubsystemLogger(subsystem: string): SubsystemLogger {
|
||||
}
|
||||
logToFile(getFileLogger(), level, message, fileMeta);
|
||||
if (!shouldLogToConsole(level, consoleSettings)) return;
|
||||
if (!shouldLogSubsystemToConsole(subsystem)) return;
|
||||
const line = formatConsoleLine({
|
||||
level,
|
||||
subsystem,
|
||||
@@ -559,7 +582,9 @@ export function createSubsystemLogger(subsystem: string): SubsystemLogger {
|
||||
fatal: (message, meta) => emit("fatal", message, meta),
|
||||
raw: (message) => {
|
||||
logToFile(getFileLogger(), "info", message, { raw: true });
|
||||
writeConsoleLine("info", message);
|
||||
if (shouldLogSubsystemToConsole(subsystem)) {
|
||||
writeConsoleLine("info", message);
|
||||
}
|
||||
},
|
||||
child: (name) => createSubsystemLogger(`${subsystem}/${name}`),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user