code: def get_logger(name="root", log_file=None, log_level=logging.DEBUG):
      """Initialize and get a logger by name.
      If the logger has not been initialized, this method will initialize the
      logger by adding one or two handlers, otherwise the initialized logger will
      be directly returned. During initialization, a StreamHandler will always be
      added. If `log_file` is specified a FileHandler will also be added.
      Args:
          name (str): Logger name.
          log_file (str | None): The log filename. If specified, a FileHandler
              will be added to the logger.
          log_level (int): The logger level. Note that only the process of
              rank 0 is affected, and other processes will set the level to
              "Error" thus be silent most of the time.
      Returns:
          logging.Logger: The expected logger.
      """
      logger = logging.getLogger(name)
      if name in logger_initialized:
          return logger
      for logger_name in logger_initialized:
          if name.startswith(logger_name):
              return logger
  
      formatter = logging.Formatter(
          "[%(asctime)s] %(name)s %(levelname)s: %(message)s",
          datefmt="%Y/%m/%d %H:%M:%S",
      )
  
      stream_handler = logging.StreamHandler(stream=sys.stdout)
      stream_handler.setFormatter(formatter)
      logger.addHandler(stream_handler)
      if log_file is not None and dist.get_rank() == 0:
          log_file_folder = os.path.split(log_file)[0]
          os.makedirs(log_file_folder, exist_ok=True)
          file_handler = logging.FileHandler(log_file, "a")
          file_handler.setFormatter(formatter)
          logger.addHandler(file_handler)
      if dist.get_rank() == 0:
          logger.setLevel(log_level)
      else:
          logger.setLevel(logging.ERROR)
      logger_initialized[name] = True
      return logger
  
file_path: PaddleOCR/test_tipc/supplementary/utils.py
imports: import os
  import sys
  import logging
  import functools
  import paddle.distributed
label_desc: Use image node_id 2 for calling a global function with example usage: get_logger(name, log_file, log_level) and returns: logger, logger, logger