s are relying on the same preference.
   *
   * @param {string} type
   *     The type of logger to use. Protocol-specific modules should use the
   *     corresponding logger type. Eg. files under /marionette should use
   *     Log.TYPES.MARIONETTE.
   */
  static get(type = Log.TYPES.REMOTE_AGENT) {
    const logger = StdLog.repository.getLogger(type);
    if (!logger.ownAppenders.length) {
      logger.addAppender(new StdLog.DumpAppender());
      logger.manageLevelFromPref(PREF_REMOTE_LOG_LEVEL);
    }
    return logger;
  }

  /**
   * Check if the current log level matches the Debug log level, or any level
   * above that. This should be used to guard logger.debug calls and avoid
   * instantiating logger instances unnecessarily.
   */
  static get isDebugLevelOrMore() {
    // Debug is assigned 20, more verbose log levels have lower values.
    return StdLog.Level[lazy.logLevel] <= StdLog.Level.Debug;
  }

  /**
   * Check if the current log level matches the Trace log level, or any level
   * above that. This should be used to guard logger.trace calls and avoid
   * instantiating logger instances unnecessarily.
   */
  static get isTraceLevelOrMore() {
    // Trace is assigned 10, more verbose log levels have lower values.
    return StdLog.Level[lazy.logLevel] <= StdLog.Level.Trace;
  }

  /**
   * WARNING: This helper is incorrectly implemented and probably doesn't do
   * what you would expect.
   *
   * At the moment `verbose` will be true for the least verbose log levels:
   * INFO, WARN, ERROR and FATAL. Fixing the issue would lead to too much
   * additional log spam on CI so we will need to use another approach, and
   * probably to decouple it from the log level.
   *
   * See https://bugzilla.mozilla.org/show_bug.cgi?id=1828395
   */
  static get verbose() {
    return StdLog.Level[lazy.logLevel] >= StdLog.Level.Info;
  }
}
PK