code: def configure_logging(
      self, app_config: flask.config.Config, debug_mode: bool
  ) -> None:
      if app_config["SILENCE_FAB"]:
          logging.getLogger("flask_appbuilder").setLevel(logging.ERROR)
  
      # configure superset app logger
      superset_logger = logging.getLogger("superset")
      if debug_mode:
          superset_logger.setLevel(logging.DEBUG)
      else:
          # In production mode, add log handler to sys.stderr.
          superset_logger.addHandler(logging.StreamHandler())
          superset_logger.setLevel(logging.INFO)
  
      logging.getLogger("pyhive.presto").setLevel(logging.INFO)
  
      logging.basicConfig(format=app_config["LOG_FORMAT"])
      logging.getLogger().setLevel(app_config["LOG_LEVEL"])
  
      if app_config["ENABLE_TIME_ROTATE"]:
          logging.getLogger().setLevel(
              app_config["TIME_ROTATE_LOG_LEVEL"]
          )
          handler = TimedRotatingFileHandler(
              app_config["FILENAME"],
              when=app_config["ROLLOVER"],
              interval=app_config["INTERVAL"],
              backupCount=app_config["BACKUP_COUNT"],
          )
          logging.getLogger().addHandler(handler)
  
      logger.info("logging was configured successfully")
  
file_path: superset/superset/utils/logging_configurator.py
imports: import abc
  import logging
  from logging.handlers import TimedRotatingFileHandler
  import flask.app
  import flask.config
label_desc: Use image node_id 1 for calling the DefaultLoggingConfigurator obj's underlying member method code with example usage: obj.configure_logging(app_config, debug_mode) without return types