Skip to content

Instantly share code, notes, and snippets.

@guoqiao
Created September 12, 2016 23:32
Show Gist options
  • Save guoqiao/dbf5d7c016d5cb4816392497fc14f862 to your computer and use it in GitHub Desktop.
Save guoqiao/dbf5d7c016d5cb4816392497fc14f862 to your computer and use it in GitHub Desktop.
Add DB Handler for Python logging
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'simple': {
'format': '%(levelname)s %(asctime)s %(name)s: %(message)s'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'db': {
'level': 'INFO',
'class': 'path.to.handlers.DBHandler',
'formatter': 'simple'
},
},
'loggers': {
'django.db.backends': {
'level': 'WARN',
},
'log': {
'level': 'DEBUG',
'handlers': ['db', 'console'],
},
},
}
from logging import Handler
from datetime import timedelta
from django.conf import settings
from django.utils import timezone
from .models import Log
class DBHandler(Handler):
def emit(self, record):
obj = Log.objects.create(
logger=record.name,
level=record.levelname,
message=record.msg,
line=record.lineno,
path=record.pathname,
)
if obj.id % 10 == 0:
when = timezone.now() - timedelta(days=settings.LOG_DAYS)
Log.objects.filter(when__lt=when).delete()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment