Skip to content

Commit f5c18d6

Browse files
committed
feat: disposable exporters
1 parent 57cb0de commit f5c18d6

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/shared.ts

+10-7
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ export class Logger {
8686
}
8787
}
8888

89-
const sn = ++this._factory.sn
89+
const sn = ++this._factory._snMessage
9090
const ts = Date.now()
91-
for (const exporter of this._factory.exporters) {
91+
for (const exporter of this._factory.exporters.values()) {
9292
const targetLevel = exporter.levels?.[this.name] ?? exporter.levels?.default ?? Level.INFO
9393
if (targetLevel < level) continue
9494
const body = this._format(exporter, args)
@@ -140,16 +140,19 @@ export class Factory {
140140
},
141141
}
142142

143-
sn = 0
144-
exporters: Exporter[] = []
143+
_snMessage = 0
144+
_snExporter = 0
145+
146+
exporters = new Map<number, Exporter>()
145147
formatters = Object.create(Factory.formatters)
146148

147-
logger(name: string, meta: any = {}) {
149+
createLogger(name: string, meta: any = {}) {
148150
return new Logger(name, meta, this)
149151
}
150152

151-
exporter(exporter: Exporter) {
152-
this.exporters.push(exporter)
153+
addExporter(exporter: Exporter) {
154+
this.exporters.set(++this._snExporter, exporter)
155+
return () => this.exporters.delete(this._snExporter)
153156
}
154157
}
155158

0 commit comments

Comments
 (0)