code: def set_logger_filenames(
      self,
      _experiments_path,
      logger_prefix="",
      task_id=None,
      add_timestamp=False,
      filename="",
  ):
      self.experiments_path = _experiments_path
  
      # set file names
      if task_id is not None:
          filename += "worker_{}.".format(task_id)
  
      # add timestamp
      if add_timestamp:
          filename += logger_prefix
  
      # add an index to the file in case there is already an experiment running with the same timestamp
      path_exists = True
      idx = 0
      while path_exists:
          self.csv_path = os.path.join(
              _experiments_path, "{}_{}.csv".format(filename, idx)
          )
          self.doc_path = os.path.join(
              _experiments_path, "{}_{}.json".format(filename, idx)
          )
          path_exists = os.path.exists(self.csv_path) or os.path.exists(
              self.doc_path
          )
          idx += 1
  
imports: import atexit
  import datetime
  import os
  import re
  import shutil
  import signal
  import time
  import uuid
  from subprocess import Popen, PIPE
  from typing import Union
  from PIL import Image
  from pandas import DataFrame
  from six.moves import input
label_desc: Use image node_id 3 for calling the Logger obj's underlying member method code with example usage: obj.set_logger_filenames(_experiments_path, logger_prefix, task_id, add_timestamp, filename) without return types