pip install request-id-django-log
Update your INSTALLED_APPS and MIDDLEWARE
INSTALLED_APPS = [
...
"request_id_django_log",
]MIDDLEWARE = [
...
"request_id_django_log.middleware.RequestIdDjangoLog",
]The following options are used by this library:
REQUEST_ID_CONFIG = {
"REQUEST_ID_HEADER": "HTTP_X_REQUEST_ID",
"GENERATE_REQUEST_ID_IF_NOT_FOUND": True,
"RESPONSE_HEADER_REQUEST_ID": "HTTP_X_REQUEST_ID",
}REQUEST_ID_HEADERis the header name which will hold the received request_id. This must be used when another system is responsible for generating the request_ids and sending them to your django application.GENERATE_REQUEST_ID_IF_NOT_FOUNDIf set to true, a new request_id will be generated if none was previously supplied.RESPONSE_HEADER_REQUEST_IDsets the name of the response header which will hold the value of the request_id.
With this configuration if the request have the header X-REQUEST-ID the library will use this header value.
If you want your logs to have the request id, add the following lines to your logging dictionary configuration:
LOGGING = {
...
"filters": {"request_id": {"()": "request_id_django_log.filters.RequestIDFilter"}},
"formatters": {
"standard": {
...
"format": "%(levelname)-8s [%(asctime)s] [%(request_id)s] %(name)s: %(message)s",
},
...
},
"handlers": {
"console": {
...
"filters": ["request_id"],
...
}
},
"loggers": {
"": {"level": "INFO", "handlers": ["console"]},
...
},
}python 2.7with Django1.8,1.9and1.11python 3.5,3.6and3.7with Django1.8,1.9,1.11,2.0,2.1,2.2and3.0