code: def set_logger_dir(dirname, action=None):
      """
      Set the directory for global logging.
  
      Args:
          dirname(str): log directory
          action(str): an action of ["k","d","q"] to be performed
              when the directory exists. Will ask user by default.
  
                  "d": delete the directory. Note that the deletion may fail when
                  the directory is used by tensorboard.
  
                  "k": keep the directory. This is useful when you resume from a
                  previous training and want the directory to look as if the
                  training was not interrupted.
                  Note that this option does not load old models or any other
                  old states for you. It simply does nothing.
  
      """
      dirname = os.path.normpath(dirname)
      global LOG_DIR, _FILE_HANDLER
      if _FILE_HANDLER:
          # unload and close the old file handler, so that we may safely delete the logger directory
          _logger.removeHandler(_FILE_HANDLER)
          del _FILE_HANDLER
  
      def dir_nonempty(dirname):
          # If directory exists and nonempty (ignore hidden files), prompt for action
          return os.path.isdir(dirname) and len(
              [x for x in os.listdir(dirname) if x[0] != "."]
          )
  
      if dir_nonempty(dirname):
          if not action:
              _logger.warning(
                  """\
  Log directory {} exists! Use 'd' to delete it. """.format(
                      dirname
                  )
              )
              _logger.warning(
                  """\
  If you're resuming from a previous run, you can choose to keep it.
  Press any other key to exit. """
              )
          while not action:
              action = (
                  input(
                      "Select Action: k (keep) / d (delete) / q (quit):"
                  )
                  .lower()
                  .strip()
              )
          act = action
          if act == "b":
              backup_name = dirname + _get_time_str()
              shutil.move(dirname, backup_name)
              info(
                  "Directory '{}' backuped to '{}'".format(
                      dirname, backup_name
                  )
              )  # noqa: F821
          elif act == "d":
              shutil.rmtree(dirname, ignore_errors=True)
              if dir_nonempty(dirname):
                  shutil.rmtree(dirname, ignore_errors=False)
          elif act == "n":
              dirname = dirname + _get_time_str()
              info(
                  "Use a new log directory {}".format(dirname)
              )  # noqa: F821
          elif act == "k":
              pass
          else:
              raise OSError("Directory {} exits!".format(dirname))
      LOG_DIR = dirname
      from .fs import mkdir_p
  
      mkdir_p(dirname)
      _set_file(os.path.join(dirname, "log.log"))
  
file_path: tensorpack/tensorpack/utils/logger.py
imports: import logging
  import os
  import os.path
  import shutil
  import sys
  from datetime import datetime
  from six.moves import input
  from termcolor import colored
label_desc: Use image node_id 4 for calling a global function with example usage: set_logger_dir(dirname, action) and returns: unknown