> koatty_logger@2.3.1 test /Users/richen/Workspace/nodejs/koatty-monorepo/packages/koatty-logger > npm run eslint && jest --passWithNoTests > koatty_logger@2.3.1 eslint > eslint --ext .ts,.js ./ console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["ERROR","test error"],"level":"error"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as error] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","string"],"level":"info"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO",123],"level":"info"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO",true],"level":"info"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO",null],"level":"info"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO",null],"level":"info"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO",{"object":"value"}],"level":"info"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO",["array","items"]],"level":"info"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO",{}],"level":"info"} 578 | setImmediate(() => { 579 | try { > 580 | this.logger[level](sanitizedArgs); | ^ 581 | resolve(); 582 | } catch (error) { 583 | reject(error); at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Immediate._onImmediate (src/logger.ts:580:33) [2026-01-28 11:45:06.232 +08:00] INFO buffered log 1 [2026-01-28 11:45:06.232 +08:00] INFO buffered log 2 [2026-01-28 11:45:06.246 +08:00] INFO log1 [2026-01-28 11:45:06.246 +08:00] INFO log2 [2026-01-28 11:45:06.246 +08:00] INFO log3 [2026-01-28 11:45:06.464 +08:00] INFO timer test 1 [2026-01-28 11:45:06.465 +08:00] INFO timer test 2 console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 0",{"index":0,"data":"data0"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 1",{"index":1,"data":"data1"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 2",{"index":2,"data":"data2"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 3",{"index":3,"data":"data3"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 4",{"index":4,"data":"data4"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 5",{"index":5,"data":"data5"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 6",{"index":6,"data":"data6"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 7",{"index":7,"data":"data7"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 8",{"index":8,"data":"data8"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 9",{"index":9,"data":"data9"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 10",{"index":10,"data":"data10"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 11",{"index":11,"data":"data11"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 12",{"index":12,"data":"data12"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 13",{"index":13,"data":"data13"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 14",{"index":14,"data":"data14"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) console.error [winston] Attempt to write logs with no transports, which can increase memory usage: {"message":["INFO","High frequency log 15",{"index":15,"data":"data15"}],"level":"info"} 384 | 385 | // 批量写入时直接调用winston(在批量刷新时已经是异步的) > 386 | this.logger[level](sanitizedArgs); | ^ 387 | } catch (e) { 388 | console.error('Error writing log entry:', e); 389 | } at DerivedLogger._transform (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/logger.js:326:15) at DerivedLogger.Object..Transform._read (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:166:10) at DerivedLogger.Object..Transform._write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js:155:83) at doWrite (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:390:139) at writeOrBuffer (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:381:5) at DerivedLogger.Object..Writable.write (../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js:302:11) at DerivedLogger. [as info] (../../node_modules/.pnpm/winston@3.19.0/node_modules/winston/lib/winston/create-logger.js:81:14) at Logger.writeLogEntry (src/logger.ts:386:25) at writeLogEntry (src/logger.ts:301:18) at Array.forEach () at Immediate.forEach [as _onImmediate] (src/logger.ts:300:23) [2026-01-28 11:45:06.588 +08:00] INFO first [2026-01-28 11:45:06.588 +08:00] INFO second [2026-01-28 11:45:06.588 +08:00] INFO third PASS test/logger.test.ts Logger Security Tests ✓ should fix error method bug (10 ms) ✓ should prevent path traversal attacks (37 ms) ✓ should prevent log injection attacks (1 ms) ✓ should filter dangerous characters in paths (1 ms) ✓ should allow safe paths (25 ms) Logger Performance Tests ✓ should manage sensitive fields memory efficiently ✓ should handle deep objects with recursion limit (1 ms) ✓ should efficiently handle arrays (7 ms) Logger Functionality Tests ✓ should create logger instance (1 ms) ✓ should manage log levels (1 ms) ✓ should handle sensitive field masking ✓ should handle various data types (1 ms) ShieldField Tests ✓ should mask different length strings correctly ✓ should handle empty and special strings Logger Batch Writing Tests ✓ should create logger with batch config (1 ms) ✓ should buffer logs when batch enabled ✓ should flush buffer manually (104 ms) ✓ should auto flush when buffer size exceeded (16 ms) ✓ should flush on timer interval (253 ms) ✓ should handle batch config updates (1 ms) ✓ should handle destroy with buffered logs (15 ms) ✓ should handle high-frequency logging efficiently (1 ms) ✓ should maintain log order in batch mode (59 ms) 📦 report is created on: /Users/richen/Workspace/nodejs/koatty-monorepo/packages/koatty-logger/jest_html_reporters.html Test Suites: 1 passed, 1 total Tests: 23 passed, 23 total -----------|---------|----------|---------|---------|------------------------------------------------------------------------------------------------------------------- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s Snapshots: 0 total Time: 3.319 s, estimated 4 s -----------|---------|----------|---------|---------|------------------------------------------------------------------------------------------------------------------- All files | 81.4 | 75.78 | 74.07 | 81.09 | logger.ts | 78.97 | 75.32 | 72.54 | 78.75 | 95,99,124,143-151,207,222,238,256-259,305-306,317,330,351,366,388,408,439,456,473,490,514-531,557,583-593,621-622 Ran all test suites. shield.ts | 91.48 | 77.77 | 100 | 91.11 | 43-44,48,87 -----------|---------|----------|---------|---------|------------------------------------------------------------------------------------------------------------------- =============================== Coverage summary =============================== Statements : 81.4% ( 197/242 ) Branches : 75.78% ( 72/95 ) Functions : 74.07% ( 40/54 ) Lines : 81.09% ( 193/238 ) ================================================================================