






















@@ -106,8 +106,8 @@ const installRunEmbeddedMocks = () => {
106106};
107107108108let runEmbeddedPiAgent: typeof import("./pi-embedded-runner/run.js").runEmbeddedPiAgent;
109-let unregisterLogTransport: (() => void) | undefined;
110-let registerLogTransportFn: typeof import("../logging/logger.js").registerLogTransport;
109+let createDiagnosticLogRecordCaptureFn: typeof import("../logging/test-helpers/diagnostic-log-capture.js").createDiagnosticLogRecordCapture;
110+let cleanupLogCapture: (() => void) | undefined;
111111let resetLoggerFn: typeof import("../logging/logger.js").resetLogger;
112112let setLoggerOverrideFn: typeof import("../logging/logger.js").setLoggerOverride;
113113const originalFetch = globalThis.fetch;
@@ -116,11 +116,10 @@ beforeAll(async () => {
116116vi.resetModules();
117117installRunEmbeddedMocks();
118118({ runEmbeddedPiAgent } = await import("./pi-embedded-runner/run.js"));
119-({
120-registerLogTransport: registerLogTransportFn,
121-resetLogger: resetLoggerFn,
122-setLoggerOverride: setLoggerOverrideFn,
123-} = await import("../logging/logger.js"));
119+({ createDiagnosticLogRecordCapture: createDiagnosticLogRecordCaptureFn } =
120+await import("../logging/test-helpers/diagnostic-log-capture.js"));
121+({ resetLogger: resetLoggerFn, setLoggerOverride: setLoggerOverrideFn } =
122+await import("../logging/logger.js"));
124123});
125124126125async function runEmbeddedPiAgentInline(
@@ -152,8 +151,8 @@ beforeEach(() => {
152151153152afterEach(() => {
154153globalThis.fetch = originalFetch;
155-unregisterLogTransport?.();
156-unregisterLogTransport = undefined;
154+cleanupLogCapture?.();
155+cleanupLogCapture = undefined;
157156setLoggerOverrideFn(null);
158157resetLoggerFn();
159158});
@@ -864,34 +863,31 @@ describe("runEmbeddedPiAgent auth profile rotation", () => {
864863});
865864866865it("logs structured failover decision metadata for overloaded assistant rotation", async () => {
867-const records: Array<Record<string, unknown>> = [];
866+const logCapture = createDiagnosticLogRecordCaptureFn();
867+cleanupLogCapture = logCapture.cleanup;
868868setLoggerOverrideFn({
869869level: "trace",
870870consoleLevel: "silent",
871871file: path.join(os.tmpdir(), `openclaw-auth-rotation-${Date.now()}.log`),
872872});
873-unregisterLogTransport = registerLogTransportFn((record) => {
874-records.push(record);
875-});
876873877874await runAutoPinnedRotationCase({
878875errorMessage:
879876'{"type":"error","error":{"type":"overloaded_error","message":"Overloaded"},"request_id":"req_overload"}',
880877sessionKey: "agent:test:overloaded-logging",
881878runId: "run:overloaded-logging",
882879});
880+await logCapture.flush();
883881884-const decisionRecord = records.find(
882+const decisionRecord = logCapture.records.find(
885883(record) =>
886-record["2"] === "embedded run failover decision" &&
887-record["1"] &&
888-typeof record["1"] === "object" &&
889-(record["1"] as Record<string, unknown>).decision === "rotate_profile",
884+record.message === "embedded run failover decision" &&
885+record.attributes?.decision === "rotate_profile",
890886);
891887892888expect(decisionRecord).toBeDefined();
893889const safeProfileId = redactIdentifier("openai:p1", { len: 12 });
894-expect((decisionRecord as Record<string, unknown>)["1"]).toMatchObject({
890+expect(decisionRecord?.attributes).toMatchObject({
895891event: "embedded_run_failover_decision",
896892runId: "run:overloaded-logging",
897893decision: "rotate_profile",
@@ -903,16 +899,14 @@ describe("runEmbeddedPiAgent auth profile rotation", () => {
903899rawErrorPreview: expect.stringContaining('"request_id":"sha256:'),
904900});
905901906-const stateRecord = records.find(
902+const stateRecord = logCapture.records.find(
907903(record) =>
908-record["2"] === "auth profile failure state updated" &&
909-record["1"] &&
910-typeof record["1"] === "object" &&
911-(record["1"] as Record<string, unknown>).profileId === safeProfileId,
904+record.message === "auth profile failure state updated" &&
905+record.attributes?.profileId === safeProfileId,
912906);
913907914908expect(stateRecord).toBeDefined();
915-expect((stateRecord as Record<string, unknown>)["1"]).toMatchObject({
909+expect(stateRecord?.attributes).toMatchObject({
916910event: "auth_profile_failure_state_updated",
917911runId: "run:overloaded-logging",
918912profileId: safeProfileId,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。