Merge "Include query string in request logging"
This commit is contained in:
commit
d1205b24bd
@ -210,7 +210,8 @@ class Session(object):
|
|||||||
|
|
||||||
@positional()
|
@positional()
|
||||||
def _http_log_request(self, url, method=None, data=None,
|
def _http_log_request(self, url, method=None, data=None,
|
||||||
json=None, headers=None, logger=_logger):
|
json=None, headers=None, query_params=None,
|
||||||
|
logger=_logger):
|
||||||
if not logger.isEnabledFor(logging.DEBUG):
|
if not logger.isEnabledFor(logging.DEBUG):
|
||||||
# NOTE(morganfainberg): This whole debug section is expensive,
|
# NOTE(morganfainberg): This whole debug section is expensive,
|
||||||
# there is no need to do the work if we're not going to emit a
|
# there is no need to do the work if we're not going to emit a
|
||||||
@ -229,7 +230,15 @@ class Session(object):
|
|||||||
if method:
|
if method:
|
||||||
string_parts.extend(['-X', method])
|
string_parts.extend(['-X', method])
|
||||||
|
|
||||||
string_parts.append(url)
|
if query_params:
|
||||||
|
# Don't check against `is not None` as this can be
|
||||||
|
# an empty dictionary, which we shouldn't bother logging.
|
||||||
|
url = url + '?' + urllib.parse.urlencode(query_params)
|
||||||
|
# URLs with query strings need to be wrapped in quotes in order
|
||||||
|
# for the CURL command to run properly.
|
||||||
|
string_parts.append('"%s"' % url)
|
||||||
|
else:
|
||||||
|
string_parts.append(url)
|
||||||
|
|
||||||
if headers:
|
if headers:
|
||||||
for header in six.iteritems(headers):
|
for header in six.iteritems(headers):
|
||||||
@ -422,10 +431,17 @@ class Session(object):
|
|||||||
if requests_auth:
|
if requests_auth:
|
||||||
kwargs['auth'] = requests_auth
|
kwargs['auth'] = requests_auth
|
||||||
|
|
||||||
|
# Query parameters that are included in the url string will
|
||||||
|
# be logged properly, but those sent in the `params` parameter
|
||||||
|
# (which the requests library handles) need to be explicitly
|
||||||
|
# picked out so they can be included in the URL that gets loggged.
|
||||||
|
query_params = kwargs.get('params', dict())
|
||||||
|
|
||||||
if log:
|
if log:
|
||||||
self._http_log_request(url, method=method,
|
self._http_log_request(url, method=method,
|
||||||
data=kwargs.get('data'),
|
data=kwargs.get('data'),
|
||||||
headers=headers,
|
headers=headers,
|
||||||
|
query_params=query_params,
|
||||||
logger=logger)
|
logger=logger)
|
||||||
|
|
||||||
# Force disable requests redirect handling. We will manage this below.
|
# Force disable requests redirect handling. We will manage this below.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user