From cd9b550d507c8e3c8dc8454a4362fdc247b4039e Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 26 Jan 2023 18:01:30 +0100 Subject: [PATCH] misc: use the same content-types list for logging and substitutions (#738050 --- passerelle/settings.py | 2 +- passerelle/utils/__init__.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/passerelle/settings.py b/passerelle/settings.py index 2e72a71e..8b3621d0 100644 --- a/passerelle/settings.py +++ b/passerelle/settings.py @@ -274,7 +274,7 @@ DATA_UPLOAD_MAX_MEMORY_SIZE = 100 * 1024 * 1024 SITE_BASE_URL = 'http://localhost' # List of passerelle.utils.Request response Content-Type to log -LOGGED_CONTENT_TYPES_MESSAGES = (r'text/', r'application/(json|xml)') +LOGGED_CONTENT_TYPES_MESSAGES = [r'text/.*', r'application/(.*\+)?json', r'application/(.*\+)?xml'] # Max size of the response to log LOGGED_RESPONSES_MAX_SIZE = 5000 diff --git a/passerelle/utils/__init__.py b/passerelle/utils/__init__.py index c4daf74e..a9942ad3 100644 --- a/passerelle/utils/__init__.py +++ b/passerelle/utils/__init__.py @@ -176,7 +176,7 @@ def protected_api(perm): return decorator -def content_type_match(ctype): +def should_content_type_body_be_logged(ctype): content_types = settings.LOGGED_CONTENT_TYPES_MESSAGES if not ctype: return False @@ -219,7 +219,8 @@ def log_http_request( if logger.level == 10: # DEBUG extra['response_headers'] = make_headers_safe(response.headers) # log body only if content type is allowed - if content_type_match(response.headers.get('Content-Type')): + content_type = response.headers.get('Content-Type', '').split(';')[0].strip().lower() + if should_content_type_body_be_logged(content_type): max_size = settings.LOGGED_RESPONSES_MAX_SIZE if hasattr(logger, 'connector'): max_size = logger.connector.logging_parameters.responses_max_size or max_size