Middleware to log http requests to postgresql
Project description
Django-Requestlog
Middleware who logs each request with their headers and the body into to PostgreSQL for diagnostic purposes.
Why Logging to the database?
Logging to the database instead of to a logfile has the advantage that it can be searched by people not having access to the server logs. Of course this only works for low traffic sites. And I recommend to purge those logs regularly with the provided manage command or celery task.
What is logged?
The log is written to the table requestlog_requestlog
.
- timestamp
- client IP address
- django user-id
- method
- URL
- header fields
- cookies
- query parameter
- POST body
- HTTP status code
- the first 1024 of the response
Credits
Based on https://github.com/ASKBOT/django-request-logging
Settings
Request logging has to be explicitely enabled (for performance reasons):
REQUEST_LOGGING_ENABLED = True
You can ask the service to ignore certain fields from the querystring and the header. You do this by setting
the name of the fields in the Django settings variable REQUEST_LOGGING_HIDE_PARAMETERS
. For example like this:
REQUEST_LOGGING_HIDE_PARAMETERS = [ 'HTTP_AUTHORIZATION', 'password' ]
Filter certain IPs (e.g. internal Kubernetes health check requests)
REQUEST_LOGGING_IGNORE_IPS = [ '10.2.3.4' ]
Filter certain paths by Regex (including query string):
REQUEST_LOGGING_IGNORE_PATHS = [ '/admin/login' ]
Purge old entries
You can use the following management command which deletes entries older than 3 days:
./manage.py requestlog_purge
Or you trigger the task with Celery beat by adding a shared task to your projects task list:
In your settings:
CELERY_BEAT_SCHEDULE = {
...
'requestlog.tasks.delete_old_requestlog_entries': {
'task': 'requestlog.tasks.delete_old_requestlog_entries',
'schedule': crontab(hour=2, minute=0)
'args': (30,) # This is the number of days to keep the entries
},
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_requestlog-1.1.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21e6606b852138e2cd8766bc14916798bbadca39affa5f417fcbaa89b2488ac6 |
|
MD5 | ac4b27d76efa5ef590ef30e737741ab7 |
|
BLAKE2b-256 | 0d811ced4de474146fe2dfaa1065f1c921d63238d82e9d21d16d8be9407b7f9d |