Skip to main content

Django library extending default logging context

Project description

django-logging-context

Description

django-logging-context is BSD licensed library extending default django logging context with following additional values:

  • request id,
  • request duration,
  • remote address,
  • response length,
  • user id,
  • username.

Quick start

  1. install the library:
pip install django-logging-context -y
  1. Add django-logging-context to your INSTALLED_APPS setting like this:
    INSTALLED_APPS = [
        ...
        'django_logging_context',
    ]
  1. Add proxy middleware to your MIDDLEWARE setting like this:
MIDDLEWARE = [
    'django_logging_context.middlewares.LoggingContextMiddleware',
    ...
]

It's important to place this LoggingContextMiddleware at the first place in a MIDDLEWARE to allow to calculate duration of response more precisely.

  1. If you just want to add info about request duration and request id to your log records then you can use LoggingWSGIMiddleware in your wsgi.py like this:
from django_logging_context.wsgi import LoggingWSGIMiddleware
application = LoggingWSGIMiddleware(get_wsgi_application())
  1. Use this example of logging setting to set up your loggers correctly
import os

LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO')
DB_LOG_LEVEL = os.environ.get('DB_LOG_LEVEL', LOG_LEVEL)
REQUESTS_LOG_LEVEL = os.environ.get('REQUESTS_LOG_LEVEL', LOG_LEVEL)
CELERY_LOG_LEVEL = os.environ.get('CELERY_LOG_LEVEL', LOG_LEVEL)
SENTRY_LOG_LEVEL = os.environ.get('SENTRY_LOG_LEVEL', LOG_LEVEL)

LOGGING = {
    'version': 1,
    'loggers': {
        'django': {'level': LOG_LEVEL},
        'django.db': {'level': DB_LOG_LEVEL},
        'urllib3': {'level': REQUESTS_LOG_LEVEL},
        'celery': {'level': CELERY_LOG_LEVEL},
        'sentry': {'level': SENTRY_LOG_LEVEL},
    },
    'root': {
        'level': LOG_LEVEL,
        'handlers': ['console']
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
            'filters': ['extending_context_filter']
        }
    },
    'filters': {
        'extending_context_filter': {
            '()': 'django_logging_context.logging.ContextExtendingFilter'
        }
    },
    'formatters': {
        'verbose': {
            'format': ('[django] %(levelname)s %(asctime)s'
                       ' %(name)s/%(module)s'
                       ' %(process)d/%(thread)d'
                       ' request_id: %(request_id)s'
                       ' remote_addr: %(remote_addr)s'
                       ' user_id: %(user_id)s'
                       ' username: %(username)s'
                       ' duration: %(response_duration)s'
                       ' uri: %(uri)s'
                       '  %(message)s')
        },
    },
}

Log records example

[django] INFO 2021-04-08 18:12:13,573 django.server/basehttp 47385/123145535799296 request_id: ea9a2dfd-a662-4632-84d0-d0c5151b5422 remote_addr: 127.0.0.1 user_id: 2 username: root duration: 1.548695s uri: http://127.0.0.1:8000/login/?next=/ "GET /admin/ HTTP/1.1" 200 46937

Project details


Download files

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

Source Distribution

django-logging-context-1.1.4.tar.gz (6.2 kB view details)

Uploaded Source

File details

Details for the file django-logging-context-1.1.4.tar.gz.

File metadata

  • Download URL: django-logging-context-1.1.4.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for django-logging-context-1.1.4.tar.gz
Algorithm Hash digest
SHA256 b7202bf9c275ffe1dbca176861731283ce86829b8b8f6b7b96f8345b738a6f45
MD5 02b8708dab7620905c228fca201642d5
BLAKE2b-256 ea52f4a6d94dde36d52e91df7d7ff34d2d989d3cca8c829cad79af2778e3ba5e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page