docstr: Class in control of logging methods, log formatting, and initializing Experiment logging
  
  Parameters
  ----------
  heartbeat_path: Str path, or None, default=None
      If string and valid heartbeat path, logging messages will also be saved in this file
  float_format: String, default='{:.5f}'
      If not default, must be a valid formatting string for floating point values. If invalid,
      default will be used
  console_params: Dict, or None, default=None
      Parameters passed to :meth:`_configure_console_handler`
  heartbeat_params: Dict, or None, default=None
      Parameters passed to :meth:`_configure_heartbeat_handler`
  add_frame: Boolean, default=False
      If True, whenever :meth:`log` is called, the source of the call will be prepended to
      the content being logged
docstr_tok: ["Class","in","control","of","logging","methods",",","log","formatting",",","and","initializing","Experiment","logging","Parameters","--","--","--","--","--","heartbeat_path",":","Str","path",",","or","None",",","default=None","If","string","and","valid","heartbeat","path",",","logging","messages","will","also","be","saved","in","this","file","float_format",":","String",",","default=","'","{",":",".5f","}","'","If","not","default",",","must","be","a","valid","formatting","string","for","floating","point","values",".","If","invalid",",","default","will","be","used","console_params",":","Dict",",","or","None",",","default=None","Parameters","passed","to",":","meth",":","`","_configure_console_handler","`","heartbeat_params",":","Dict",",","or","None",",","default=None","Parameters","passed","to",":","meth",":","`","_configure_heartbeat_handler","`","add_frame",":","Boolean",",","default=False","If","True",",","whenever",":","meth",":","`","log","`","is","called",",","the","source","of","the","call","will","be","prepended","to","the","content","being","logged"]
code: def __init__(
      self,
      heartbeat_path=None,
      float_format="{:.5f}",
      console_params=None,
      heartbeat_params=None,
      add_frame=False,
  ):
      """Class in control of logging methods, log formatting, and initializing Experiment logging
  
      Parameters
      ----------
      heartbeat_path: Str path, or None, default=None
          If string and valid heartbeat path, logging messages will also be saved in this file
      float_format: String, default='{:.5f}'
          If not default, must be a valid formatting string for floating point values. If invalid,
          default will be used
      console_params: Dict, or None, default=None
          Parameters passed to :meth:`_configure_console_handler`
      heartbeat_params: Dict, or None, default=None
          Parameters passed to :meth:`_configure_heartbeat_handler`
      add_frame: Boolean, default=False
          If True, whenever :meth:`log` is called, the source of the call will be prepended to
          the content being logged"""
      self.reporting_type = "logging"  # TODO: Add `reporting_type` kwarg (logging, advanced)
      self.heartbeat_path = heartbeat_path
      self.float_format = float_format
      self.console_params = console_params or {}
      self.heartbeat_params = heartbeat_params or {}
      self.add_frame = add_frame
  
      self._validate_parameters()
      self._configure_reporting_type()
  
imports: from hyperparameter_hunter.i_o import exceptions
  from hyperparameter_hunter.space.dimensions import Categorical
  from hyperparameter_hunter.settings import G
  from hyperparameter_hunter.utils.general_utils import now_time, expand_mins_secs
  from contextlib import suppress
  from datetime import datetime
  import inspect
  import logging
  import os.path
  import sys
  from typing import List
label_desc: Use image node_id 1 to create a new ReportingHandler object from inherited base classes: object with example: obj = ReportingHandler(heartbeat_path, float_format, console_params, heartbeat_params, add_frame)