code: def handle(job_id, log_level='info', log_file=None):
      
      handlers = [LogDatabaseHandler(job_id)]  # log on db always
      if log_file is None:
          # add a StreamHandler if not already there
          if not any(h for h in logging.root.handlers
                     if isinstance(h, logging.StreamHandler)):
              handlers.append(LogStreamHandler(job_id))
      else:
          handlers.append(LogFileHandler(job_id, log_file))
      for handler in handlers:
          logging.root.addHandler(handler)
      init(job_id, LEVELS.get(log_level, logging.WARNING))
      try:
          yield
      finally:
          # sanity check to make sure that the logging on file is working
          if (log_file and log_file != os.devnull and
                  os.path.getsize(log_file) == 0):
              logging.root.warn('The log file %s is empty!?' % log_file)
          for handler in handlers:
              logging.root.removeHandler(handler)
docs: Context manager adding and removing log handlers.
  
      :param job_id:
           ID of the current job
      :param log_level:
           one of debug, info, warn, error, critical
      :param log_file:
           log file path (if None, logs on stdout only)