|
9 | 9 | getDefaultLoggerOptions, |
10 | 10 | generateChildLogger, |
11 | 11 | generateServerLogger, |
| 12 | + generatePlatformLogger, |
12 | 13 | } from "../src"; |
13 | 14 |
|
14 | 15 | describe("Logger", () => { |
@@ -252,5 +253,77 @@ describe("Logger", () => { |
252 | 253 | chai.expect(logArray.filter((log) => log.includes(pString)).length).eq(1); |
253 | 254 | }); |
254 | 255 | }); |
| 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 | + }); |
255 | 328 | }); |
256 | 329 | }); |
0 commit comments