Skip to content

Commit 39c0b8e

Browse files
committed
fix(logger): pass loggerOverride string as log level to chunk logger
When users passed a string level like "error" via loggerOverride in generatePlatformLogger, it was not being passed through to the chunk logger. This caused all logs to be forwarded to console regardless of the configured level. The fix ensures that when loggerOverride is a string, it's used as the log level in the opts passed to generateClientLogger/generateServerLogger. - All logs are still captured in memory (pino level remains "trace") - Only logs at configured level or higher are forwarded to console - Added tests to verify loggerOverride string is respected Bump version to 3.0.2
1 parent e2cfb8f commit 39c0b8e

File tree

4 files changed

+84
-5
lines changed

4 files changed

+84
-5
lines changed

misc/logger/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@walletconnect/logger",
33
"description": "Logger Utils",
4-
"version": "3.0.1",
4+
"version": "3.0.2",
55
"author": "WalletConnect, Inc. <walletconnect.com>",
66
"license": "MIT",
77
"homepage": "https://github.com/WalletConnect/walletconnect-utils/",
@@ -64,4 +64,4 @@
6464
"@walletconnect/safe-json": "^1.0.2",
6565
"pino": "10.0.0"
6666
}
67-
}
67+
}

misc/logger/src/utils.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,15 @@ export function generatePlatformLogger(params: {
102102
};
103103
}
104104

105+
// When loggerOverride is a string, use it as the log level
106+
const opts: LoggerOptions = {
107+
...params.opts,
108+
level: typeof params.loggerOverride === "string" ? params.loggerOverride : params.opts?.level,
109+
};
110+
105111
if (typeof window !== "undefined") {
106-
return generateClientLogger(params);
112+
return generateClientLogger({ ...params, opts });
107113
} else {
108-
return generateServerLogger(params);
114+
return generateServerLogger({ ...params, opts });
109115
}
110116
}

misc/logger/test/index.test.ts

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
getDefaultLoggerOptions,
1010
generateChildLogger,
1111
generateServerLogger,
12+
generatePlatformLogger,
1213
} from "../src";
1314

1415
describe("Logger", () => {
@@ -252,5 +253,77 @@ describe("Logger", () => {
252253
chai.expect(logArray.filter((log) => log.includes(pString)).length).eq(1);
253254
});
254255
});
256+
257+
describe("Platform Logger", () => {
258+
let consoleTrace: sinon.SinonStub;
259+
let consoleDebug: sinon.SinonStub;
260+
let consoleLog: sinon.SinonStub;
261+
let consoleWarn: sinon.SinonStub;
262+
let consoleError: sinon.SinonStub;
263+
264+
beforeEach(() => {
265+
consoleTrace = sinon.stub(console, "trace");
266+
consoleDebug = sinon.stub(console, "debug");
267+
consoleLog = sinon.stub(console, "log");
268+
consoleWarn = sinon.stub(console, "warn");
269+
consoleError = sinon.stub(console, "error");
270+
});
271+
272+
afterEach(() => {
273+
consoleTrace.restore();
274+
consoleDebug.restore();
275+
consoleLog.restore();
276+
consoleWarn.restore();
277+
consoleError.restore();
278+
});
279+
280+
it("Respects loggerOverride string as log level for console output", () => {
281+
// Use "warn" level (NOT "error") to avoid coincidentally matching the default
282+
// The default level in BaseChunkLogger is "error", so using "error" here
283+
// would pass even if loggerOverride is not properly passed through
284+
const { logger, chunkLoggerController } = generatePlatformLogger({
285+
loggerOverride: "warn",
286+
});
287+
288+
logger.trace("trace message");
289+
logger.debug("debug message");
290+
logger.info("info message");
291+
logger.warn("warn message");
292+
logger.error("error message");
293+
294+
const logArray = chunkLoggerController!.getLogArray();
295+
296+
// All logs should be stored in memory
297+
chai.expect(logArray.length).eq(5);
298+
299+
// Only warn and error should be forwarded to console
300+
chai.expect(consoleTrace.called).eq(false);
301+
chai.expect(consoleDebug.called).eq(false);
302+
chai.expect(consoleLog.called).eq(false);
303+
chai.expect(consoleWarn.called).eq(true);
304+
chai.expect(consoleError.called).eq(true);
305+
});
306+
307+
it("Stores all logs in memory regardless of level", () => {
308+
const { logger, chunkLoggerController } = generatePlatformLogger({
309+
loggerOverride: "warn",
310+
});
311+
312+
logger.trace("trace");
313+
logger.debug("debug");
314+
logger.info("info");
315+
logger.warn("warn");
316+
logger.error("error");
317+
318+
const logArray = chunkLoggerController!.getLogArray();
319+
320+
// All 5 logs should be stored
321+
chai.expect(logArray.filter((log) => log.includes("trace")).length).eq(1);
322+
chai.expect(logArray.filter((log) => log.includes("debug")).length).eq(1);
323+
chai.expect(logArray.filter((log) => log.includes("info")).length).eq(1);
324+
chai.expect(logArray.filter((log) => log.includes("warn")).length).eq(1);
325+
chai.expect(logArray.filter((log) => log.includes("error")).length).eq(1);
326+
});
327+
});
255328
});
256329
});

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)