Metadata-Version: 1.1
Name: django-request-id
Version: 0.1.0
Summary: Augment each request with unique id for logging purposes
Home-page: https://github.com/nigma/django-request-id
Author: Filip Wasilewski
Author-email: en@ig.ma
License: MIT
Description: =================
        django-request-id
        =================
        
        .. image:: https://pypip.in/v/django-request-id/badge.png
            :target: https://pypi.python.org/pypi/django-request-id/
            :alt: Latest Version
        
        .. image:: https://pypip.in/d/django-request-id/badge.png
            :target: https://pypi.python.org/pypi/django-request-id/
            :alt: Downloads
        
        .. image:: https://pypip.in/license/django-request-id/badge.png
            :target: https://pypi.python.org/pypi/django-request-id/
            :alt: License
        
        Augments each request with unique ``request_id`` attribute and provides
        request id logging helpers.
        
        Developed and used at `en.ig.ma software shop <http://en.ig.ma>`_.
        
        
        Quickstart
        ----------
        
        1. Include ``django-request-id`` in your ``requirements.txt`` file.
        
        2. Add ``request_id`` to ``INSTALLED_APPS`` (necessary only if you are
           going to use the ``{% request_id %}`` template tag).
        
        3. Add ``request_id.middleware.RequestIdMiddleware`` to the top of
           ``MIDDLEWARE_CLASSES``.
        
        4. The app integrates with the standard Python/Django logging by defining
           a filter that puts a ``request_id`` variable in scope of every log message.
        
           First add a filter definition to the Django ``LOGGING`` settings:
        
           .. code-block:: python
        
               "filters": {
                   "request_id": {
                       "()": "request_id.logging.RequestIdFilter"
                   }
               }
        
           Then enable the filter for related handlers:
        
           .. code-block:: python
        
               "handlers": {
                   "console": {
                       ...
                       "filters": ["request_id"],
                   }
                }
        
           And finally modify formatter output format to include the ``%(request_id)`` placeholder:
        
           .. code-block:: python
        
               "formatters": {
                   "console": {
                       "format": "%(asctime)s - %(levelname)-5s [%(name)s] request_id=%(request_id)s %(message)s"
                   }
               }
        
           A full Django logging config example may look like this:
        
           .. code-block:: python
        
        
               LOGGING= {
                   "version": 1,
                   "disable_existing_loggers": False,
                   "filters": {
                       "request_id": {
                           "()": "request_id.logging.RequestIdFilter"
                       }
                   },
                   "formatters": {
                       "console": {
                           "format": "%(asctime)s - %(levelname)-5s [%(name)s] request_id=%(request_id)s %(message)s",
                           "datefmt": "%H:%M:%S"
                       }
                   },
                   "handlers": {
                       "console": {
                           "level": "DEBUG",
                           "filters": ["request_id"],
                           "class": "logging.StreamHandler",
                           "formatter": "console"
                       }
                   },
                   "loggers": {
                       "": {
                           "level": "DEBUG",
                           "handlers": ["console"]
                       }
                   }
               }
        
        5. Make sure that your web server adds a ``X-Request-ID`` header to each request
           (and logs it in the server log for further matching of the server and app log entries).
        
           Heroku handles this `automatically <https://devcenter.heroku.com/articles/http-request-id>`_.
           On Nginx you may require a separate module (see
           `nginx_requestid <https://github.com/hhru/nginx_requestid>`_ or
           `nginx-x-rid-header <https://github.com/newobj/nginx-x-rid-header>`_).
           On Apache you need to ``a2enmod`` the `unique_id <https://httpd.apache.org/docs/2.4/mod/mod_unique_id.html>`_
           module and set ``REQUEST_ID_HEADER = "UNIQUE_ID"`` in the Django project
           settings.
        
           If you can't generate the X-Request-Id header at the web server level then
           simply set ``REQUEST_ID_HEADER = None`` in your project settings and the
           app will generate a unique id value automatically instead of retrieving
           it from the wsgi environment.
        
           For more info on server configs see
           `server-config <http://django-request-id.rtfd.org/en/latest/server-config.html>`_.
        
        Dependencies
        ------------
        
        ``django-request-id`` depends on ``django-appconf>=0.6``.
        
        Documentation
        -------------
        
        The full documentation is at http://django-request-id.rtfd.org.
        
        There's also an instant demo example that can be run from the cloned repository::
        
            python demo.py
        
        License
        -------
        
        ``django-request-id`` is released under the MIT license.
        
        Other Resources
        ---------------
        
        - GitHub repository - https://github.com/nigma/django-request-id
        - PyPi Package site - http://pypi.python.org/pypi/django-request-id
        
        
        Commercial Support
        ------------------
        
        This app and many other help us build better software
        and focus on delivering quality projects faster.
        We would love to help you with your next project so get in touch
        by dropping an email at en@ig.ma.
        
        
        
        
        History
        -------
        
        0.1.0 (2014-01-30)
        ++++++++++++++++++
        
        * First release
Keywords: django-request-id
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Topic :: Software Development :: Libraries :: Python Modules
