code: def log_failure_event(
      self, kwargs, response_obj, start_time, end_time
  ):
      try:
          if kwargs["litellm_params"].get("metadata") is None:
              pass
          else:
              model_group = kwargs["litellm_params"]["metadata"].get(
                  "model_group", None
              )
              id = (
                  kwargs["litellm_params"]
                  .get("model_info", {})
                  .get("id", None)
              )
              if model_group is None or id is None:
                  return
  
              request_count_api_key = f"{model_group}_request_count"
              # decrement count in cache
              request_count_dict = (
                  self.router_cache.get_cache(key=request_count_api_key)
                  or {}
              )
              request_count_dict[id] = request_count_dict.get(id) - 1
              self.router_cache.set_cache(
                  key=request_count_api_key, value=request_count_dict
              )
  
              ### TESTING ###
              if self.test_flag:
                  self.logged_failure += 1
      except Exception as e:
          pass
  
file_path: litellm/litellm/router_strategy/least_busy.py
imports: import dotenv, os, requests, random
  from typing import Optional
  import traceback
  from litellm.caching import DualCache
  from litellm.integrations.custom_logger import CustomLogger
label_desc: Use image node_id 4 for calling the LeastBusyLoggingHandler obj's underlying member method code with example usage: obj.log_failure_event(kwargs, response_obj, start_time, end_time) without return types