django-modelhandler
A python logging handler that saves logs into django model. That’s it.
Installation
Via pip:
pip install django-modelhandler
Usage
Add modelhandler to your INSTALLED_APPS, then, configure log handler in your desired way. For example, using dictConfig:
{
'version': 1,
'handlers': {
'modelhandler': {
'class': 'modelhandler.handlers.LogModel',
'level': 'ERROR'
}
},
'loggers': {
'my_logger': {
'handlers': ['modelhandler'],
'level': 'ERROR'
}
}
}
Run migrations that will create a Log model:
python manage.py migrate
And now you can start logging in django model.
Getting logs:
from modelhandler.models import Log
# Get the latest log
log = Log.objects.latest()
log.name # logger name
log.level # logging level integer
log.levelname # logging level as string (DEBUG, INFO, etc.)
log.message # the log message
log.traceback # traceback, if exists. default: None
log.filename # filename (with ext) where the log was sent
log.funcName # function name where the log was sent
log.created # log creation datetime
log.formatted # the log message as if it was written in file. (with [datetime] [level] etc.)
If you have a django admin enabled, then you can browse your logs on model Log of application modelhandler. It has a customized modeladmin to enabale filtering by logger name and levelname, and searching by message.
If you would like to customize a log model (to alter models Meta), then just subclass a modelhandler.models.Log model, do whatever you want and add your model to LogModel handler parameters:
'handlers': {
'modelhandler': {
'class': 'modelhandler.handlers.LogModel',
'model': 'path.to.your.model'
'level': 'ERROR'
}
}
If you using celery in your project then you might want to add some model cleaning tasks in CELERYBEAT_SCHEDULE:
CELERYBEAT_SCHEDULE = {
'cleanup_day': {
'task': 'modelhandler.tasks.cleanup_day',
'schedule': timedelta(days=1)
}, # OR
'cleanup_week': {
'task': 'modelhandler.tasks.cleanup_week',
'schedule': timedelta(days=7)
}, # OR
'cleanup_month': {
'task': 'modelhandler.tasks.cleanup_month',
'schedule': timedelta(days=30)
}
}
modelhandler.tasks.cleanup_day will delete all logs that are older than one day from time of task execution. modelhandler.tasks.cleanup_week and modelhandler.tasks.cleanup_month are similar.
If you want to customize the time of deletion, there is a task modelhandler.tasks.cleanup_logs that accepts a before parameter that must be a datetime object or None (in this case a value of timezone.now() will be taken). There is no magic: just Log.objects.filter(created__lte=before).delete()
History
1.0.0 (2016-06-12)
Initial release
Metadata
Release files for django-modelhandler 1.0.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 | Provenance | |
|---|---|---|---|---|
| django-modelhandler-1.0.0.zip | 6.6 kB | Without provenance | Details |
Release files / django-modelhandler-1.0.0.zip
| Download URL | django-modelhandler-1.0.0.zip |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
46dca9679896173bfa6d922b8856d0f4e9c63ac306d6260c804104700d0e3435
|
|
BLAKE2b-256 checksum How to use checksums |
c68993e4a4adecc3b0d8966cd3f90666f93513d9dabdcd55fe6a516f8d826f3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for django-modelhandler 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.