A library which add DBHandler to Django logging handlers.
Project description
django-camel-spitter
Hi. I am a very rude camel 🐫 and I like to spit logs 💦 directly into your database 🗄️.
Introduction
Project django-camel-spitter adds a new handler to standard django logging system.
Purpose of this handler is to store logs straight to the database, primary with simplicity and opportunity to easy extend this solution.
Installation
# pip
pip install django-camel-spitter
# pipenv
pipenv install django-camel-spitter
# poetry
poetry add django-camel-spitter
Setup
1. Adding camel_spitter
to settings.INSTALLED_APPS
:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'camel_spitter'
)
2. Creating a log model:
Only importance is inheritance from camel_spitter.models.BaseLogModel
.
from camel_spitter.models import BaseLogModel
class BasicLogEntry(BaseLogModel):
class Meta:
app_label = 'tests'
db_table = 'log_entries'
default_permissions = ()
3. Adding model
, filter
and handler
to settings.LOGGING
:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'filters': {
'db_filter': {
'()': 'camel_spitter.db_filter.DBFilter',
},
},
'handlers': {
'db': {
'level': 'INFO',
'class': 'camel_spitter.db_handler.DBHandler',
'model': 'tests.models.BasicLogEntry', # path to your custom model
'filters': ['db_filter']
}
},
'loggers': {
'logger': {
'handlers': ['db'],
'level': 'INFO'
}
}
}
Example
1. Quick use
If you did all setup steps, you are ready to log to the database.
import logging
from app.models import BasicLogEntry
logging.getLogger('logger').error('Foo Bar Error')
logged_information = BasicLogEntry.objects.get(message='Foo Bar Error')
# logged_information = {BasicLogEntry}BasicLogEntry object (1)
2. Example of extended model
If you like to log some additional data, for example: [request.body, user_name], you need to first add these fields to model:
from camel_spitter.models import BaseLogModel
from django.db import models
from django.contrib.postgres.fields import JSONField
class ExtendedLogEntry(BaseLogModel):
class Meta:
app_label = 'tests'
db_table = 'extended_log_entries'
default_permissions = ()
request_body = JSONField(null=True)
user_name = models.CharField(max_length=100, null=True)
As a second, you need to add these additional data to logging:
import logging
logging.getLogger('logger').error('Foo Bar Error', extra={
'request_body': json.loads(request.body), 'user_name': 'Foo Bar'
})
Made with ❤ by Adam Žúrek & BACKBONE s.r.o.
0.1.0 : 2020-06-27
- Initial release
0.2.0 : 2020-06-29
- Changed python version requirement from "^0.8" to "^0.6"
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
Built Distribution
Hashes for django-camel-spitter-0.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1204c2fdf5e9fa6d8dd6dc65bf249d016ba1a2a73a24cbfff0d933724fe6a43c |
|
MD5 | 003f1f641c9b7acd9d05a8f16d19cb52 |
|
BLAKE2b-256 | 3b7ca048c28cd958049479ab2d7c41957b75af569fc4753e7365c547a1fb101d |
Hashes for django_camel_spitter-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f141e9b45c4498ddc0a00f89fc0a450715d70974e4c2f3b76ae469b4d8a36038 |
|
MD5 | 37dc90d5d86912e90f0f7156563aff43 |
|
BLAKE2b-256 | 3f2d61be5831fb23fca8c982aae9e9ae11f49446938ad9aee1b548780790a160 |