static log(level, message, data) {
      if (level > _Logger.DEBUG_LEVEL) return;
      const styles = {
        error: "color: #ff5555; font-weight: bold",
        warn: "color: #ffaa00; font-weight: bold",
        info: "color: #0080fe; font-weight: bold",
        debug: "color: #00aa00; font-weight: bold",
        trace: "color: #888888",
        data: "color: #555; font-style: italic"
      };
      let styleType;
      let method;
      switch (level) {
        case _Logger.DEBUG_LEVELS.ERROR:
          styleType = "error";
          method = console.error;
          break;
        case _Logger.DEBUG_LEVELS.WARN:
          styleType = "warn";
          method = console.warn;
          break;
        case _Logger.DEBUG_LEVELS.INFO:
          styleType = "info";
          method = console.info;
          break;
        case _Logger.DEBUG_LEVELS.DEBUG:
          styleType = "debug";
          method = console.debug;
          break;
        case _Logger.DEBUG_LEVELS.TRACE:
          styleType = "trace";
          method = console.log;
          break;
        default:
          return;
      }
      console.group(`%c Model: ${message}`, styles[styleType]);
      if (data !== void 0) {
        console.log("%c Data:", styles.data, data);
      }
      console.groupEnd();
    }
Core logging method that handles message formatting and output.
@param {number} level - Debug level from Logger.DEBUG_LEVELS
@param {string} message - Message to log
@param {any} [data] - Optional data to display
@private