Skip to main content

django-tracer gives you an easy way to generate and use a UUID per request

Project description

django-tracer

Build Status

Generate a UUID for all requests to Django to be used in logging and error reporting for traceability.

Why?

Why would you want to use this silly little thing? Well in a containerized, orchestrated, microservice world with centralized logging it's often hard to figure out where things have gone wrong.

This little middleware adds a UUID to the normal Django request object which you can use to add to add to things like:

  • All of your log messages
  • Error reports to Sentry/Rollbar/etc
  • Pass along to other internal services

Along with generating and attaching a UUID to each request, the middleware also automatically adds the UUID to the response headers as X-Request-ID so anyone consuming your responses, say as an API, can use that as a reference point for reporting errors back to you.

Installation

First you need to install it via pip:

pip install django-tracer

Then just add tracer to INSTALLED_APPS in your settings.

Then add tracer.middleware.RequestID to the top of your MIDDLEWARE settings.

Usage with standard logging

import logging

from django.http import HttpResponse

logger = logging.getLogger(__name__)

def some_view(request):
    """ simple log example """
    logger.info("Whee!", extra={'request_id': request.id})
    return HttpResponse("example content")

Other ways to use this Request ID

There are several other places you may consider wanting to use the ID to improve traceability:

  • Pass it as an argument to any Celery tasks you generate so there is a clear path between the incoming request and the tasks that were generated from it
  • Pass it as a header or argument to other internal APIs or services
  • Attach it to a bound structlog object so it is always included in your log output

Thanks!

Special thanks to Rolf Håvard Blindheim for graciously turning over the name django-tracer to us to be able to use it for this project.

Need help?

REVSYS can help with your Python, Django, and infrastructure projects. If you have a question about this project, please open a GitHub issue. If you love us and want to keep track of our goings-on, here's where you can find us online:

Project details


Download files

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

Files for django-tracer, version 0.9.3
Filename, size & hash File type Python version Upload date
django-tracer-0.9.3.tar.gz (3.5 kB) View hashes Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page