code: def info(self, message, log_=True, print_=True, *args, **kwargs):
      if (self.cuda and dist.get_rank() == 0) or not self.cuda:
          if print_:
              self.logger.info(message, *args, **kwargs)
  
          if log_:
              with open(self.log_path, "a+") as f_log:
                  f_log.write(message + "\n")
  
imports: import logging
  import torch.distributed
label_desc: Use image node_id 2 for calling the Logger obj's underlying member method code with example usage: obj.info(message, log_, print_) without return types