constructor(logLevel = 'warn') {
    this.logLevel = this.constructor.levels[logLevel];

    for (const level of ['error', 'warn', 'info', 'debug', 'verbose']) {
      if (this.logLevel < this.constructor.levels[level]) {
        return;
      }

      this[level] = ['debug', 'verbose'].indexOf(level) === -1 ? console[level] : console.log;
    }
  }
By default, calls to all log severities are a no-operation. It's only when the
user specifies a log level, are they replaced with logging statements
@type {Logger.noop}