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_HEADER
is 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_FOUND
If set to true, a new request_id will be generated if none was previously supplied.RESPONSE_HEADER_REQUEST_ID
sets 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.7
with Django1.8
,1.9
and1.11
python 3.5
,3.6
and3.7
with Django1.8
,1.9
,1.11
,2.0
,2.1
,2.2
and3.0