flask-error-monitor 0.1.1
Simple and Extensible Error Monitor framework for Flask
License: BSD-3-Clause
Requires Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
Keywords: Flask,error-tracker,exception-monitoring

==============================
Flask Error Monitor
==============================

Full featured error monitor app for Flask

.. image:: https://travis-ci.org/sonus21/flask-error-monitor.svg?branch=master
    :target: https://travis-ci.org/sonus21/flask-error-monitor

.. image:: https://coveralls.io/repos/github/sonus21/flask-error-monitor/badge.svg
    :target: https://coveralls.io/github/sonus21/flask-error-monitor

Introduction
------------

Flask-Error-Monitor is a batteries-included, simple-to-use `Flask <http://flask.pocoo.org/>`_ extension that lets you
add error recording interfaces to Flask applications. It's implemented in such a way that the developer has total control of the resulting application.

Out-of-the-box, Flask-Error-Monitor plays nicely with various ORM's, including

- `SQLAlchemy <http://www.sqlalchemy.org/>`_,

- `MongoEngine <http://mongoengine.org/>`_,


It also boasts a simple Model management interface.

The biggest feature of Flask-Error-Monitor is flexibility. To start off with you can create a very simple application in no time,
with exception monitor enabled, but then you can go further and customize different aspects.

Flask-Error-Monitor is an active project, well-tested and production ready.

Installation
------------
To install Flask-Error-Monitor, simply::

    pip install flask-error-monitor.git


Features
--------
- Sensitive data( like *password*, *secret* ) Masking
- Record all the frames ( frame data are stored in JSON format so that it can be analyzed later)
- Unique URL generation
- Number of times the exception occurred and first/last time of exception
- Sending emails with exception details
- Record different types of exception like 500 or 404 etc
- Raise or update ticket in Jira/Bugzilla etc by ticketing interface.

Usage
-----

* App configuration

.. code::

    ...
    APP_ERROR_SEND_EMAIL = True
    APP_ERROR_RECIPIENT_EMAIL = ('example@example.com',)
    APP_ERROR_SUBJECT_PREFIX = "Server Error"
    APP_ERROR_EMAIL_SENDER = 'user@example.com'



app.py

.. code::

    from flask import Flask
    from flask_mail import Mail
    import settings
    from flask_error_monitor import AppErrorMonitor
    from flask_sqlalchemy import SQLAlchemy
    ...
    app = Flask(__name__)
    app.config.from_object(settings)
    db = SQLAlchemy(app)
    class MyMailer(Mail, NotificationMixin):
        def notify(self, message, exception):
            self.send(message)
    mail = MyMailer(app=app)
    error_monitor = AppErrorMonitor(app=app, db=db, notifier=mail)

    ....

    ....
    # Record exception when 404 error code is raised
    @app.errorhandler(403)
    def error_403(e):
        error_monitor.record_exception()
        # any custom logic

    # Record error using decorator
    @app.errorhandler(500)
    @error_monitor.track_exception
    def error_500(e):
        # some custom logic
    ....



Documentations
--------------
This has got extensive document browse at https://flask-error-monitor.readthedocs.io/en/latest/

All docs are in `docs/source`

And if you want to preview any *.rst* snippets that you may want to contribute, go to `http://rst.ninjs.org/ <http://rst.ninjs.org/>`_.


Examples
--------
Several usage examples are included in the */tests* folder. Please feel free to add your own examples, or improve
on some of the existing ones, and then submit them via GitHub as a *pull-request*.

You can see some of these examples in action at https://github.com/sonus21/flask-error-monitor/tree/master/examples.
To run the examples on your local environment, one at a time, do something like::

    cd flask-error-monitor
    python examples/simple/app.py


Tests
-----
Test are run with *nose*. If you are not familiar with this package you can get some more info from `their website <https://nose.readthedocs.io/>`_.

To run the tests, from the project directory, simply::

    pip install -r requirements-dev.txt
    nosetests

You should see output similar to::

    .............................................
    ----------------------------------------------------------------------
    Ran 29 tests in 1.144s

    OK


Contribution
-------------
You're most welcome to raise pull request or fixes.