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/gelfudp://yourserver:12201tcp://yourserver:12201
GRAYLOG_NODE- The middleware sends a_nodefield that defaults tosocket.gethostname. Set this to override it.GRAYLOG_LEVEL- The defaultlevelto send for log entries. Defaults to 6 (INFO).GRAYLOG_TIMEOUT- Timeout (in seconds) for sending log entries to Graylog. Defaults to0.25seconds.GRAYLOG_FIELDS- Extra fields to send for each request (not prefixed with underscores). Defaults to{}.GRAYLOG_HEADERS-Trueto include all HTTP request headers (except sensitive headers likeAuthorizationandCookie- see below), otherwise a list of headers to be included. Defaults to[].GRAYLOG_EXCLUDE_HEADERS- A list of headers to exclude whenGRAYLOG_HEADERSisTrue. Defaults to["authorization", "cookie", "proxy-authorization"].GRAYLOG_USER_AGENT-Trueto parse out User-Agent header into separate fields using ua_parser (default isFalse).GRAYLOG_REFERER-Trueto parse out the referer domain (default isFalse) into a separate field.GRAYLOG_USERNAME-Trueto includerequest.user.get_username()(default isFalse).GRAYLOG_TIMING-Trueto include request timing information (the default),Falseto 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 themedia.example.comdomain.{"path": [r"^/_"]}- Skips logging of requests to paths starting with_.{"ip": "192\.168\."}- Skips logging of requests from192.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 toFalsewill strip the last line from stack traces (in case the line includes a literal message), and not send the_exception_messagefield. Defaults toTrue.GRAYLOG_FACILITY- Sent as_facility, and used as the default logger name for logging messages sent viarequest.graylog.GRAYLOG_TIMESTAMP- Whether to include atimestampfield in data sent to Graylog. Setting toFalsemeans Graylog will infer the current time when it receives log entries. Defaults toTrue.GRAYLOG_IP- Whether to include the IP address of requests. Defaults toTrue.
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.
Release files for django-graylog 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_graylog-0.8.0.tar.gz | 6.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_graylog-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.1 kB
Release files / django_graylog-0.8.0.tar.gz
| Download URL | django_graylog-0.8.0.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
313dc8be1aa272080803a194fae83449f9297ce0ee7268e0fdd092fc580a2172
|
|
BLAKE2b-256 checksum How to use checksums |
fff0a66c4e9214831b7308509877f9ef67726915aefa533c80a96703db0125a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.12
|
Release files / django_graylog-0.8.0-py3-none-any.whl
| Download URL | django_graylog-0.8.0-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9fdac3bf754d042e253be687c5eb1fc095a7c7a532b88a2d9789f797daf8e14a
|
|
BLAKE2b-256 checksum How to use checksums |
1fae19274b8f0db80bc221d322382aefd7835ea5b436d74da4b662acc753603e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.12
|