import { Injectable } from '../inject' import { AbstractLogger, LeveledLogEntry, Logger } from '.' /** * A specific logger that forwards its messages to a collection of loggers */ @Injectable({ lifetime: 'singleton' }) export class LoggerCollection extends AbstractLogger { public async addEntry(entry: LeveledLogEntry): Promise { const promises = this.loggers.map((l) => l.addEntry(entry)) await Promise.all(promises) } private loggers: Logger[] = [] public attachLogger(...loggers: Logger[]) { this.loggers.push(...loggers) } }