docs: def log_web_failure(err, err_lid=''):
  	'Try to print meaningful info about wrapped twisted.web exceptions.'
  	if err_lid and not err_lid.endswith(' '): err_lid += ' '
  	try: err.value.reasons # multiple levels of fail
  	except AttributeError: pass
  	else: err = err.value
  	if hasattr(err, 'reasons'):
  		for err in err.reasons:
  			lid = '  '
  			if isinstance(err, Failure):
  				log.error('{}{} {}: {}'.format(err_lid, lid, err.type, err.getErrorMessage()))
  				for line in err.getTraceback().splitlines():
  					log.error('{}{}   {}'.format(err_lid, lid, line))
  			else: log.error('{}{} {}: {}'.format(err_lid, lid, type(err), err))