general: log Publik-Caller header (#83111)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Emmanuel Cazenave 2023-11-03 15:46:23 +01:00
parent 979e531b3a
commit 2a73e4dfb3
2 changed files with 18 additions and 15 deletions

View File

@ -474,16 +474,18 @@ class GenericEndpointView(GenericConnectorMixin, SingleObjectMixin, View):
connector_name, endpoint_name = kwargs['connector'], kwargs['endpoint']
url = request.get_full_path()
logger_extra = {
'request': request,
'connector': connector_name,
'connector_endpoint': endpoint_name,
'connector_endpoint_url': url,
'publik_caller_url': request.headers.get('Publik-Caller-URL', ''),
}
if request.method.lower() not in self.endpoint.endpoint_info.methods:
logger_extra['connector_endpoint_method'] = self._allowed_methods()
self.connector.logger.warning(
'endpoint %s %s (=> 405)' % (request.method, url),
extra={
'request': request,
'connector': connector_name,
'connector_endpoint': endpoint_name,
'connector_endpoint_method': self._allowed_methods(),
'connector_endpoint_url': url,
},
extra=logger_extra,
)
return self.http_method_not_allowed(request, *args, **kwargs)
@ -496,16 +498,15 @@ class GenericEndpointView(GenericConnectorMixin, SingleObjectMixin, View):
except UnicodeDecodeError:
payload = '<BINARY PAYLOAD>'
logger_extra.update(
{
'connector_endpoint_method': request.method,
'connector_payload': payload,
}
)
self.connector.logger.info(
'endpoint %s %s (%r) ' % (request.method, url, payload),
extra={
'request': request,
'connector': connector_name,
'connector_endpoint': endpoint_name,
'connector_endpoint_method': request.method,
'connector_endpoint_url': url,
'connector_payload': payload,
},
extra=logger_extra,
)
if not self.check_perms(request):

View File

@ -110,6 +110,7 @@ def test_proxy_logger(mocked_get, caplog, app, arcgis):
'template': '{{ attributes.NOM }}',
'id_template': '{{ attributes.NUMERO }}',
},
headers={'Publik-Caller-URL': 'https://wcs.invalid/backoffice/management/foo/1/'},
status=200,
)
@ -122,6 +123,7 @@ def test_proxy_logger(mocked_get, caplog, app, arcgis):
assert log.extra['connector'] == 'arcgis'
assert log.extra['connector_endpoint'] == 'mapservice-query'
assert log.extra['connector_endpoint_method'] == 'GET'
assert log.extra['publik_caller_url'] == 'https://wcs.invalid/backoffice/management/foo/1/'
assert '/arcgis/test/mapservice-query?' in log.extra['connector_endpoint_url']
# Resource Generic Logger