===================
errbit for python
===================
An `errbit <http://errbit.github.io/errbit/>`_ client for python.
Installation
============
Add `errbit` to your package dependencies in `setup.py` or `requirements.txt`.
Configuration
=============
Configure errbit with environment variables:
- ``ERRBIT_URL`` - the post-url to your errbit installation.
- ``ERRBIT_APP_ID`` - your errbit app id (see URL when visiting the app).
- ``ERRBIT_API_KEY`` - your errbit API key.
- ``ERRBIT_PACKAGE`` - the setuptools name of your package.
- ``ERRBIT_ENVIRONMENT`` - the name of the environment you are running, such as
``staging`` or ``production``.
- ``ERRBIT_HTTP_CLIENT`` - Switch the http client implementation. Switching the
implementation can solve different problems when communicating from private
networks with HTTP proxies. Current implementations are: ``requests``, ``urllib``,
``urllib2``.
- ``ERRBIT_IGNORE`` - path to ignore file (default: ~/.errbit/errbit_ignore.json)
Ignore file
-----------
The thrown exception will be ignored and not passed to errbit if its message matches one of the regex in ``exception_msg``.
.. code:: json
{
"exception_msg": [
"^AttributeError\\b",
"regex2"
]
}
Usage
=====
The ``errbit`` package ships with the core notification implementation for errbit
and integrations for some frameworks.
Manually posting exceptions
---------------------------
Use the errbit client to post exceptions to an errbit installation:
.. code:: python
from errbit.client import Client
import sys
client = Client()
try:
do_something()
except:
exc_info = sys.exc_info()
request = {
'url': 'http://my.app/app/folders/create',
'component': 'folders',
'action': 'create',
'params': {
'title': 'My Folder'},
'session': {
'cookie': 'session_id=123345'},
'cgi-data': {
'HTTP_X_FORWARDED_HOST': 'my.app'}}
client.post(exc_info, request=request)
Plone
-----
Plone integration is automatically done with a logging handler,
nothing needs to be done for enabling it beside configuring the environment variables.
For testing the connection you can call the view ``errbit-make-error`` as ``Manager``.
Report JavaScript errors in Plone
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In order to report JavaScript errors, install the Generic Setup profile
``profile-errbit.ploneintegration:default``, which registers the necessary
JavaScript resources.
For JavaScript reporting the ``ERRBIT_APP_ID`` environment variable needs to be set.
Test the configuration: if ``http://localhost:8080/Plone/errbit-plone.js`` is empty
not all enviornment variables are configured.
Development / tests
===================
Install the package and run the tests using buildout:
.. code:: sh
git clone git@github.com:4teamwork/errbit-python.git
cd errbit-python
ln -s test-plone-4.3.x.cfg buildout.cfg
python2.7 bootstrap.py
bin/buildout
bin/test
Links
-----
- Github: https://github.com/4teamwork/errbit-python
- Issues: https://github.com/4teamwork/errbit-python/issues
- Pypi: http://pypi.python.org/pypi/errbit-python
- Continuous integration: https://jenkins.4teamwork.ch/search?q=errbit-python
Copyright
---------
This package is copyright by `4teamwork <http://www.4teamwork.ch/>`_.
``errbit-python`` is licensed under GNU General Public License, version 2.
Changelog
=========
1.4.0 (2016-01-10)
------------------
- Add uninstall profile for Plone integration.
[jone]
1.3.1 (2015-08-10)
------------------
- Fix bug when trying to log a cleanup error.
[jone]
1.3.0 (2015-03-02)
------------------
- Implement JavaScript error reporting.
The profile "errbit-ploneintegration:default" must be installed.
[jone]
1.2.1 (2015-03-02)
------------------
- Fix type error when having non-strings as keys in request's cgi-data.
[jone]
1.2.0 (2015-02-27)
------------------
- Post "unknown" app version when ERRBIT_PACKAGE is invalid.
[jone]
- Log errors happening while handling errors.
[jone]
- Make get_ignore_regex() look in a default location for the ignore file.
[lgraf]
1.1.5 (2014-08-11)
------------------
- Fix empty message syntax in XML.
[jone]
1.1.4 (2014-03-18)
------------------
- Added regex filter for exception messages.
[lknoepfel]
1.1.3 (2013-09-12)
------------------
- Fix TypeError with Python 2.6 and Plone.
[jone]
1.1.2 (2013-09-02)
------------------
- Plone: refactor cleanups to cleanup cookies in all places.
[jone]
1.1.1 (2013-09-02)
------------------
- Plone: send component and action too.
[jone]
- Plone: remove keys containing "pass" from request data and session cookie.
We should not send the users password on registration / login failures.
[jone]
- Plone: add errbit-make-error for testing the connection.
[jone]
1.1.0 (2013-08-28)
------------------
- Implement urllib2 HTTP client.
[jone]
- Implement urllib HTTP client.
[jone]
- Refactor HTTP posting and add ERRBIT_HTTP_CLIENT environment variable for
choosing a different implementation.
[jone]
1.0.0 (2013-08-27)
------------------
- Initial implementation.
[jone]