From 45de695d4fc29e8f8b7e304b0842e0cb6fad97a2 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Fri, 3 Apr 2026 05:07:27 +0200 Subject: [PATCH] feat(backend): add request id (#11666) helpful for https://github.com/inventree/InvenTree/issues/9996 --- src/backend/InvenTree/InvenTree/logging.py | 17 +++++++++++++++++ src/backend/InvenTree/InvenTree/urls.py | 1 + 2 files changed, 18 insertions(+) create mode 100644 src/backend/InvenTree/InvenTree/logging.py 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