code: def get_logger(cls):
          '''
          :return: the class logger
          '''
          if KittyObject._logger is None:
              logger = logging.getLogger('kitty')
              logger.setLevel(logging.INFO)
              consolehandler = logging.StreamHandler()
              console_format = logging.Formatter('[%(levelname)-8s][%(module)s.%(funcName)s] %(message)s')
              consolehandler.setFormatter(console_format)
              logger.addHandler(consolehandler)
              if not os.path.exists('./kittylogs'):
                  os.mkdir('./kittylogs')
              filehandler = logging.FileHandler(KittyObject.log_file_name)
              file_format = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(module)s.%(funcName)s] -> %(message)s')
              filehandler.setFormatter(file_format)
              logger.addHandler(filehandler)
              KittyObject._logger = logger
          return KittyObject._loggef get_logger(cls):
          '''
          :return: the class logger
          '''
          if KittyObject._logger is None:
              logger = logging.getLogger('kitty')
              logger.setLevel(logging.INFO)
              consolehandler = logging.StreamHandler()
              console_format = logging.Formatter('[%(levelname)-8s][%(module)s.%(funcName)s] %(message)s')
              consolehandler.setFormatter(console_format)
              logger.addHandler(consolehandler)
              if not os.path.exists('./kittylogs'):
                  os.mkdir('./kittylogs')
              filehandler = logging.FileHandler(KittyObject.log_file_name)
              file_format = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(module)s.%(funcName)s] -> %(message)s')
              filehandler.setFormatter(file_format)
              logger.addHandler(filehandler)
              KittyObject._logger = logger
          return KittyObject._logger
docs: :return: the class logger