diff --git a/src/backend/InvenTree/InvenTree/logging.py b/src/backend/InvenTree/InvenTree/logging.py new file mode 100644 index 0000000000..e6d7b59226 --- /dev/null +++ b/src/backend/InvenTree/InvenTree/logging.py @@ -0,0 +1,17 @@ +"""Helpers for logging integrations.""" + +from django.dispatch import receiver + +import structlog +from django_structlog import signals + + +@receiver(signals.update_failure_response) +@receiver(signals.bind_extra_request_finished_metadata) +def add_request_id_to_response(response, logger, **kwargs): + """Add the request ID to the response header, so that it can be traced through logs. + + source: https://django-structlog.readthedocs.io/en/latest/how_tos.html#bind-request-id-to-response-s-header + """ + context = structlog.contextvars.get_merged_contextvars(logger) + response['X-InvenTree-ReqId'] = context['request_id'] diff --git a/src/backend/InvenTree/InvenTree/urls.py b/src/backend/InvenTree/InvenTree/urls.py index 2820606347..01da5ace8d 100644 --- a/src/backend/InvenTree/InvenTree/urls.py +++ b/src/backend/InvenTree/InvenTree/urls.py @@ -20,6 +20,7 @@ import build.api import common.api import company.api import importer.api +import InvenTree.logging # noqa: F401 - ensure logging handlers are registered import machine.api import order.api import part.api