code: def setup_main_logger(file_logging=True, console=True, path: Optional[str] = None, level=logging.INFO):
      
      if file_logging and console:
          log_config = LOGGING_CONFIGS["file_console"]  # type: ignore
      elif file_logging:
          log_config = LOGGING_CONFIGS["file_only"]
      elif console:
          log_config = LOGGING_CONFIGS["console_only"]
      else:
          log_config = LOGGING_CONFIGS["none"]
  
      if path:
          log_config["handlers"]["rotating"]["filename"] = path  # type: ignore
  
      for _, handler_config in log_config['handlers'].items():  # type: ignore
          handler_config['level'] = level
  
      logging.config.dictConfig(log_config)  # type: ignore
  
      def exception_hook(exc_type, exc_value, exc_traceback):
          if is_python34():
              # Python3.4 does not seem to handle logger.exception() well
              import traceback
              traceback = "".join(traceback.format_tb(exc_traceback)) + exc_type.name
              logging.error("Uncaught exception\n%s", traceback)
          else:
              logging.exception("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
  
      sys.excepthook = exception_hook
docs: Configures logging for the main application.
  
      :param file_logging: Whether to log to a file.
      :param console: Whether to log to the console.
      :param path: Optional path to write logfile to.
      :param level: Log level. Default: INFO.