Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

django-graylog

A Django middleware for logging requests to Graylog.

Installation

pip install django-graylog

Using an HTTP/HTTPS requires the requests module, which can be included with pip install django-graylog[http].

Parsing user agents requires the ua_parser module, which can be included with pip install django-graylog[ua].

All optional libraries may be included using pip install django-graylog[all].

Configuration

Simply add django_graylog.GraylogMiddleware to your MIDDLEWARE setting, after django.middleware.common.CommonMiddleware. By default, the middleware does nothing unless GRAYLOG_ENDPOINT is set (see below).

Settings

  • GRAYLOG_ENDPOINT - An HTTP, HTTPS, UDP, or TCP endpoint to send GELF logs to. For example:
    • http://yourserver:12201/gelf
    • udp://yourserver:12201
    • tcp://yourserver:12201
  • GRAYLOG_NODE - The middleware sends a _node field that defaults to socket.gethostname. Set this to override it.
  • GRAYLOG_LEVEL - The default level to send for log entries. Defaults to 6 (INFO).
  • GRAYLOG_TIMEOUT - Timeout (in seconds) for sending log entries to Graylog. Defaults to 0.25 seconds.
  • GRAYLOG_FIELDS - Extra fields to send for each request (not prefixed with underscores). Defaults to {}.
  • GRAYLOG_HEADERS - True to include all HTTP request headers (except sensitive headers like Authorization and Cookie - see below), otherwise a list of headers to be included. Defaults to [].
  • GRAYLOG_EXCLUDE_HEADERS - A list of headers to exclude when GRAYLOG_HEADERS is True. Defaults to ["authorization", "cookie", "proxy-authorization"].
  • GRAYLOG_USER_AGENT - True to parse out User-Agent header into separate fields using ua_parser (default is False).
  • GRAYLOG_REFERER - True to parse out the referer domain (default is False) into a separate field.
  • GRAYLOG_USERNAME - True to include request.user.get_username() (default is False).
  • GRAYLOG_TIMING - True to include request timing information (the default), False to disable.
  • GRAYLOG_FILTERS - A dictionary of filters to exclude records from being logged. Each key is a field name, and each value is a list of regegular expressions to exclude. For example:
    • {"host": [r"media.example.com"]} - Skips logging of requests to the media.example.com domain.
    • {"path": [r"^/_"]} - Skips logging of requests to paths starting with _.
    • {"ip": "192\.168\."} - Skips logging of requests from 192.168.* addresses. Using a string instead of a list works for a single regular expression.
  • GRAYLOG_EXCEPTION_MESSAGES - Whether to include exception messages in data sent to Graylog. Setting to False will strip the last line from stack traces (in case the line includes a literal message), and not send the _exception_message field. Defaults to True.
  • GRAYLOG_FACILITY - Sent as _facility, and used as the default logger name for logging messages sent via request.graylog.
  • GRAYLOG_TIMESTAMP - Whether to include a timestamp field in data sent to Graylog. Setting to False means Graylog will infer the current time when it receives log entries. Defaults to True.
  • GRAYLOG_IP - Whether to include the IP address of requests. Defaults to True.

Advanced Usage

In addition to the standard logging middleware, django_graylog installs an object on your request objects (request.graylog) that has standard logging methods for recording per-request logs. You may also set custom keys on this object (request.graylog["key"] = "value") that will be included in log entries. For example:

def homepage(request):
    request.graylog["user"] = request.user.user_name
    request.graylog.info("Rendered homepage for {user}", user=request.user.user_name)

If you want standard Python logging calls during a request to be logged into Graylog as well, django_graylog comes with a GraylogRequestHandler logging handler that tracks the current request and associates logging to it.

Download files

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

Source Distribution

django_graylog-0.9.0.dev0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_graylog-0.9.0.dev0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file django_graylog-0.9.0.dev0.tar.gz.

File metadata

  • Download URL: django_graylog-0.9.0.dev0.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for django_graylog-0.9.0.dev0.tar.gz
Algorithm Hash digest
SHA256 4892b48f911f222fb06af52f0622fbe58ec09595bb09b19082023ba838945f97
MD5 16392f604a333caae9530290c6b1ee4f
BLAKE2b-256 a22fc996c0009b0ccd2405f72a47d235d36c53f17973787ce643f80422e31250

See more details on using hashes here.

File details

Details for the file django_graylog-0.9.0.dev0-py3-none-any.whl.

File metadata

  • Download URL: django_graylog-0.9.0.dev0-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for django_graylog-0.9.0.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 71b0f12a2e6a5a49094cc0a54948ab6b50c8d663ae13541c6341899a541abaab
MD5 ae0501d14afe8e0b17cf0a99781e1ad2
BLAKE2b-256 e201e98834e256aa1c766026eaf24f9af0ce55459145f5f8d50b55006f5828cf

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