From a09299f6a6b6278f3a30d02410797086b1d2129c Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Wed, 11 Sep 2024 12:20:30 +0100 Subject: [PATCH 1/3] Intercept matrix_sdk logging via console --- src/settings/rageshake.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/settings/rageshake.ts b/src/settings/rageshake.ts index ea9805dfb..ffd9f333b 100644 --- a/src/settings/rageshake.ts +++ b/src/settings/rageshake.ts @@ -467,6 +467,8 @@ declare global { */ export async function init(): Promise { global.mx_rage_logger = new ConsoleLogger(); + + // configure loglevel based loggers: setLogExtension(logger, global.mx_rage_logger.log); // these are the child/prefixed loggers we want to capture from js-sdk // there doesn't seem to be an easy way to capture all children @@ -474,6 +476,28 @@ export async function init(): Promise { setLogExtension(logger.getChild(loggerName), global.mx_rage_logger.log); }); + // intercept console logging so that we can get matrix_sdk logs: + // this is nasty, but no logging hooks are provided + ( + ["trace", "debug", "info", "warn", "error"] as ( + | "trace" + | "debug" + | "info" + | "warn" + | "error" + )[] + ).forEach((level) => { + if (!window.console[level]) return; + const prefix = `${level.toUpperCase()} matrix_sdk`; + const originalMethod = window.console[level]; + window.console[level] = (...args): void => { + originalMethod(...args); + if (typeof args[0] === "string" && args[0].startsWith(prefix)) { + global.mx_rage_logger.log(LogLevel[level], "matrix_sdk", ...args); + } + }; + }); + return tryInitStorage(); } From 41aa77946dc2d074acadc3821d5226d6a659d9c1 Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Sat, 21 Sep 2024 16:23:49 +0100 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: Andrew Ferrazzutti --- src/settings/rageshake.ts | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/settings/rageshake.ts b/src/settings/rageshake.ts index ffd9f333b..a1f64dc52 100644 --- a/src/settings/rageshake.ts +++ b/src/settings/rageshake.ts @@ -478,18 +478,16 @@ export async function init(): Promise { // intercept console logging so that we can get matrix_sdk logs: // this is nasty, but no logging hooks are provided - ( - ["trace", "debug", "info", "warn", "error"] as ( - | "trace" - | "debug" - | "info" - | "warn" - | "error" - )[] - ).forEach((level) => { - if (!window.console[level]) return; - const prefix = `${level.toUpperCase()} matrix_sdk`; + [ + "trace" as const, + "debug" as const, + "info" as const, + "warn" as const, + "error" as const, + ].forEach((level) => { const originalMethod = window.console[level]; + if (!originalMethod) return; + const prefix = `${level.toUpperCase()} matrix_sdk`; window.console[level] = (...args): void => { originalMethod(...args); if (typeof args[0] === "string" && args[0].startsWith(prefix)) { From 7aae120825a88978408bd3c6ce0786e9b9b0ca19 Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Mon, 23 Sep 2024 12:45:34 +0100 Subject: [PATCH 3/3] Add comments to clarify arg handling --- src/settings/rageshake.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/settings/rageshake.ts b/src/settings/rageshake.ts index a1f64dc52..1ac9fba1c 100644 --- a/src/settings/rageshake.ts +++ b/src/settings/rageshake.ts @@ -490,7 +490,10 @@ export async function init(): Promise { const prefix = `${level.toUpperCase()} matrix_sdk`; window.console[level] = (...args): void => { originalMethod(...args); + // args for calls from the matrix-sdk-crypto-wasm look like: + // ["DEBUG matrix_sdk_indexeddb::crypto_store: IndexedDbCryptoStore: opening main store matrix-js-sdk::matrix-sdk-crypto\n at /home/runner/.cargo/git/checkouts/matrix-rust-sdk-1f4927f82a3d27bb/07aa6d7/crates/matrix-sdk-indexeddb/src/crypto_store/mod.rs:267"] if (typeof args[0] === "string" && args[0].startsWith(prefix)) { + // we pass all the args on to the logger in case there are more sent in future global.mx_rage_logger.log(LogLevel[level], "matrix_sdk", ...args); } };