docs: def is_log(value):
      """
      This function checks whether file path
      that is specified at "log_file" option exists,
      whether write permission to the file path.
  
      Return the following value:
      case1: exists path and write permission
          is_log('/tmp')
              '/tmp/hogehoge.log'
  
      case2: non-exists path and write permission
          is_log('/tmp/hogehoge')
              '/tmp/hogehoge'
          In this case, 'hogehoge' doesn't exist.
          but 'hogehoge' is considered as a file.
          Thus, create log file named 'hogehoge'.
  
      case3: complete non-exists path
          is_log('/tmp/hogehoge/fugafuga')
              IOError: [Error 2] No such file or directory.
          The last part of given path is only considered log_file's name.
          In this case, "fugafuga" is considered log_file's name.
  
      case4: syslog case
          is_log('syslog')
              'syslog'
  
      In any case, check whether given path exists before checking permission.
  
      Notes: Even if given relative path, works fine.
             But, if don't use as much as possible if good.
  
             Recommended giving he full path including the file name.
  
      :param str value:
          log file path
          You can specify not only absolute path but also relational path.
      :rtype: str
      :return: Converted absolute log file path.
      """
  
      if value.lower() == 'syslog':
          return 'syslog'
  
      value = os.path.expanduser(value)
      value = os.path.expandvars(value)
      value = os.path.abspath(value)
  
      log_file = 'blackbird.log'
  
      if os.path.exists(value):
  
          if os.path.isdir(value):
  
              if os.access(value, os.W_OK):
                  return os.path.join(value, log_file)
  
              else:
                  err_message = ('{path}: Permission denied.'
                                 ''.format(path=value)
                                 )
                  raise validate.VdtValueError(err_message)
  
          else:
  
              if os.access(value, os.W_OK):
                  return value
  
              else:
                  err_message = ('{path}: Permission denied.'
                                 ''.format(path=value)
                                 )
                  raise validate.VdtValueError(err_message)
  
      else:
          directory = os.path.split(value)[0]
  
          if os.path.isdir(directory):
  
              if os.access(directory, os.W_OK):
                  return value
  
              else:
                  err_message = ('{directory}: Permission denied.'
                                 ''.format(directory=directory)
                                 )
                  raise validate.VdtValueError(err_message)
  
          else:
  
              if os.path.exists(directory):
                  err_message = ('{directory} is file.'
                                 ''.format(directory=directory)
                                 )
                  raise validate.VdtTypeError(err_message)
  
              else:
                  err_message = ('{directory}: No such file or directory.'
                                 ''.format(directory=directory)
                                 )
                  raise validate.VdtValueError(err_message)