class_docstr: OutputDispatcher is the base class to handle routing alerts to outputs
  
  Public methods:
      format_output_config: returns a formatted version of the outputs configuration
          that is to be written to disk
      get_user_defined_properties: returns any properties for this output that must be
          provided by the user. must be implemented by subclasses
      dispatch: handles the actual sending of alerts to the configured service. must
          be implemented by subclass
docstr: Log the status of sending the alerts
  
  Args:
      success (bool or dict): Indicates if the dispatching of alerts was successful
      descriptor (str): Service descriptor
docstr_tok: ["Log","the","status","of","sending","the","alerts","Args",":","success","(","bool","or","dict",")",":","Indicates","if","the","dispatching","of","alerts","was","successful","descriptor","(","str",")",":","Service","descriptor"]
code: def _log_status(cls, success, descriptor):
      """Log the status of sending the alerts
  
      Args:
          success (bool or dict): Indicates if the dispatching of alerts was successful
          descriptor (str): Service descriptor
      """
      if success:
          LOGGER.info(
              "Successfully sent alert to %s:%s",
              cls.__service__,
              descriptor,
          )
      else:
          LOGGER.error(
              "Failed to send alert to %s:%s",
              cls.__service__,
              descriptor,
          )
  
imports: from abc import ABCMeta, abstractmethod
  from collections import namedtuple
  import requests
  from requests.exceptions import Timeout
  import urllib3
  import backoff
  from streamalert.alert_processor.outputs.credentials.provider import OutputCredentialsProvider
  from streamalert.shared.backoff_handlers import backoff_handler, success_handler, giveup_handler
  from streamalert.shared.helpers.boto import REGION
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 3 for calling the OutputDispatcher obj's underlying member method code with example usage: obj._log_status(cls, success, descriptor) without return types