import type {Log, Logger} from './logger'; import {LogLevel} from './logger'; /** * A logger that filters specified log levels. */ export class FilteredLogger implements Logger { private readonly logger: Logger; private readonly levelIndex: number; private static readonly logLevels: LogLevel[] = [LogLevel.DEBUG, LogLevel.INFO, LogLevel.WARNING, LogLevel.ERROR]; public constructor(logger: Logger, level: LogLevel) { this.logger = logger; this.levelIndex = FilteredLogger.logLevels.indexOf(level); } public log(log: T): void { const index = FilteredLogger.logLevels.indexOf(log.level); if (index >= this.levelIndex) { this.logger.log(log); } } }