mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 10:30:44 +00:00
fix(matrix): restore SDK root logger state
This commit is contained in:
@@ -2,7 +2,37 @@ import { logger as matrixJsSdkRootLogger } from "matrix-js-sdk/lib/logger.js";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { ensureMatrixSdkLoggingConfigured, setMatrixSdkLogMode } from "./logging.js";
|
||||
|
||||
type MatrixJsSdkTestLogger = typeof matrixJsSdkRootLogger & {
|
||||
getLevel?: () => number | string;
|
||||
levels: { WARN: number };
|
||||
methodFactory?: unknown;
|
||||
rebuild?: () => void;
|
||||
setLevel?: (level: number | string, persist?: boolean) => void;
|
||||
};
|
||||
|
||||
describe("Matrix SDK logging", () => {
|
||||
it("restores the Matrix JS SDK global logger level after quiet mode", () => {
|
||||
const logger = matrixJsSdkRootLogger as MatrixJsSdkTestLogger;
|
||||
const originalLevel = logger.getLevel?.();
|
||||
const originalMethodFactory = logger.methodFactory;
|
||||
try {
|
||||
logger.setLevel?.("warn", false);
|
||||
ensureMatrixSdkLoggingConfigured();
|
||||
setMatrixSdkLogMode("quiet");
|
||||
setMatrixSdkLogMode("default");
|
||||
|
||||
expect(logger.getLevel?.()).toBe(logger.levels.WARN);
|
||||
expect(logger.methodFactory).toBe(originalMethodFactory);
|
||||
} finally {
|
||||
if (typeof originalLevel === "string" || typeof originalLevel === "number") {
|
||||
logger.setLevel?.(originalLevel, false);
|
||||
}
|
||||
logger.methodFactory = originalMethodFactory;
|
||||
logger.rebuild?.();
|
||||
setMatrixSdkLogMode("default");
|
||||
}
|
||||
});
|
||||
|
||||
it("quiets the Matrix JS SDK global logger for JSON-safe CLI commands", () => {
|
||||
const debugSpy = vi.spyOn(console, "debug").mockImplementation(() => undefined);
|
||||
try {
|
||||
|
||||
@@ -4,9 +4,7 @@ import { ConsoleLogger, LogService, setMatrixConsoleLogging } from "../sdk/logge
|
||||
let matrixSdkLoggingConfigured = false;
|
||||
let matrixSdkLogMode: "default" | "quiet" = "default";
|
||||
const matrixSdkBaseLogger = new ConsoleLogger();
|
||||
const matrixJsSdkRootLogMethodFactory = (
|
||||
matrixJsSdkRootLogger as unknown as MatrixJsSdkLoglevelLogger
|
||||
).methodFactory;
|
||||
let matrixJsSdkRootLoggerSnapshot: MatrixJsSdkRootLoggerSnapshot | null = null;
|
||||
|
||||
type MatrixJsSdkLogger = {
|
||||
trace: (...messageOrObject: unknown[]) => void;
|
||||
@@ -18,9 +16,15 @@ type MatrixJsSdkLogger = {
|
||||
};
|
||||
|
||||
type MatrixJsSdkLoglevelLogger = {
|
||||
getLevel?: () => number | string;
|
||||
methodFactory?: unknown;
|
||||
rebuild?: () => void;
|
||||
setLevel?: (level: string, persist?: boolean) => void;
|
||||
setLevel?: (level: number | string, persist?: boolean) => void;
|
||||
};
|
||||
|
||||
type MatrixJsSdkRootLoggerSnapshot = {
|
||||
level?: number | string;
|
||||
methodFactory?: unknown;
|
||||
};
|
||||
|
||||
function shouldSuppressMatrixHttpNotFound(module: string, messageOrObject: unknown[]): boolean {
|
||||
@@ -88,14 +92,21 @@ function applyMatrixSdkLogger(): void {
|
||||
|
||||
function setMatrixJsSdkRootLoggerLevel(level: "debug" | "silent"): void {
|
||||
const logger = matrixJsSdkRootLogger as unknown as MatrixJsSdkLoglevelLogger;
|
||||
matrixJsSdkRootLoggerSnapshot ??= {
|
||||
level: logger.getLevel?.(),
|
||||
methodFactory: logger.methodFactory,
|
||||
};
|
||||
if (level === "silent") {
|
||||
logger.methodFactory = () => () => undefined;
|
||||
logger.setLevel?.("debug", false);
|
||||
logger.setLevel?.("silent", false);
|
||||
logger.rebuild?.();
|
||||
return;
|
||||
}
|
||||
logger.methodFactory = matrixJsSdkRootLogMethodFactory;
|
||||
logger.setLevel?.("debug", false);
|
||||
logger.methodFactory = matrixJsSdkRootLoggerSnapshot.methodFactory;
|
||||
const previousLevel = matrixJsSdkRootLoggerSnapshot.level;
|
||||
if (typeof previousLevel === "string" || typeof previousLevel === "number") {
|
||||
logger.setLevel?.(previousLevel, false);
|
||||
}
|
||||
logger.rebuild?.();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user