Skip to main content

A simple way to implement request_id in Django

Project description

Request ID Django Log

Build Status Maintainability Test Coverage Coverage Status PyPI version Code style: black Downloads Downloads Downloads Say Thanks!

Install

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",
]

Configure

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.

Logs

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"]},
        ...
    },
}

Supported Versions

  • python 2.7 with Django 1.8, 1.9 and 1.11
  • python 3.5, 3.6 and 3.7 with Django 1.8, 1.9, 1.11, 2.0, 2.1, 2.2 and 3.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for request-id-django-log, version 0.2.0
Filename, size File type Python version Upload date Hashes
Filename, size request_id_django_log-0.2.0-py3-none-any.whl (7.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size request_id_django_log-0.2.0.tar.gz (5.6 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page