code: def setup_logger(name="ppdet", output=None):
      """
      Initialize logger and set its verbosity level to INFO.
      Args:
          output (str): a file name or a directory to save log. If None, will not save log file.
              If ends with ".txt" or ".log", assumed to be a file name.
              Otherwise, logs will be saved to `output/log.txt`.
          name (str): the root module name of this logger
  
      Returns:
          logging.Logger: a logger
      """
      logger = logging.getLogger(name)
      if name in logger_initialized:
          return logger
  
      logger.setLevel(logging.INFO)
      logger.propagate = False
  
      formatter = logging.Formatter(
          "[%(asctime)s] %(name)s %(levelname)s: %(message)s",
          datefmt="%m/%d %H:%M:%S",
      )
      # stdout logging: master only
      local_rank = dist.get_rank()
      if local_rank == 0:
          ch = logging.StreamHandler(stream=sys.stdout)
          ch.setLevel(logging.DEBUG)
          ch.setFormatter(formatter)
          logger.addHandler(ch)
  
      # file logging: all workers
      if output is not None:
          if output.endswith(".txt") or output.endswith(".log"):
              filename = output
          else:
              filename = os.path.join(output, "log.txt")
          if local_rank > 0:
              filename = filename + ".rank{}".format(local_rank)
          os.makedirs(os.path.dirname(filename))
          fh = logging.FileHandler(filename, mode="a")
          fh.setLevel(logging.DEBUG)
          fh.setFormatter(logging.Formatter())
          logger.addHandler(fh)
      logger_initialized.append(name)
      return logger
  
imports: import logging
  import os
  import sys
  import paddle.distributed
label_desc: Use image node_id 1 for calling a global function with example usage: setup_logger(name, output) and returns: logger, logger