Metadata-Version: 1.1
Name: django-modelhandler
Version: 1.0.0
Summary: A python logging handler that saves logs into django model. That's it.
Home-page: https://github.com/sashgorokhov/django-modelhandler
Author: sashgorokhov
Author-email: sashgorokhov@gmail.com
License: MIT License
Download-URL: https://github.com/sashgorokhov/django-modelhandler/archive/master.zip
Description: django-modelhandler
        *******************
        
        .. image:: https://badge.fury.io/py/django-modelhandler.svg
            :target: https://badge.fury.io/py/django-modelhandler
        
        .. image:: https://travis-ci.org/sashgorokhov/django-modelhandler.svg?branch=master
            :target: https://travis-ci.org/sashgorokhov/django-modelhandler
        
        A python logging handler that saves logs into django model. That's it.
        
        Installation
        ============
        
        Via pip:
        
        .. code-block:: shell
        
            pip install django-modelhandler
        
        Usage
        =====
        
        Add ``modelhandler`` to your INSTALLED_APPS, then, configure log handler in your desired way.
        For example, using dictConfig:
        
        .. code-block:: python
        
            {
                '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:
        
        .. code-block:: shell
        
            python manage.py migrate
        
        And now you can start logging in django model.
        
        Getting logs:
        
        .. code-block:: python
        
            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:
        
        .. code-block:: python
        
            '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``:
        
        .. code-block:: python
        
            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()``
        
        
        .. :changelog:
        
        History
        -------
        
        1.0.0 (2016-06-12)
        ++++++++++++++++++
        
        * Initial release
Keywords: django,logging,handler
Platform: UNKNOWN
