Skip to main content

airbrake-python

Note. Python 3.4+ are advised to use new Airbrake Python notifier which supports async API and code hunks. Python 2.7 users should continue to use this notifier.

Airbrake integration for python that quickly and easily plugs into your existing code.

import airbrake

logger = airbrake.getLogger()

try:
    1/0
except Exception:
    logger.exception("Bad math.")

airbrake-python is used most effectively through its logging handler, and uses the Airbrake V3 API for error reporting.

install

To install airbrake-python, run:

$ pip install -U airbrake

setup

The easiest way to get set up is with a few environment variables:

export AIRBRAKE_API_KEY=*****
export AIRBRAKE_PROJECT_ID=12345
export AIRBRAKE_ENVIRONMENT=dev

and you're done!

Otherwise, you can instantiate your AirbrakeHandler by passing these values as arguments to the getLogger() helper:

import airbrake

logger = airbrake.getLogger(api_key=*****, project_id=12345)

try:
    1/0
except Exception:
    logger.exception("Bad math.")

By default, airbrake will catch and send uncaught exceptions. To avoid this behvaiour, use the send_uncaught_exc option: logger = airbrake.getLogger(api_key=*****, project_id=12345, send_uncaught_exc=False)

setup for Airbrake On-Premise and other compatible back-ends (e.g. Errbit)

Airbrake Enterprise and self-hosted alternatives, such as Errbit, provide a compatible API.

You can configure a different endpoint than the default (https://api.airbrake.io) by either:

  • Setting an environment variable:
export AIRBRAKE_HOST=https://self-hosted.errbit.example.com/
  • Or passing a host argument to the getLogger() helper:
import airbrake

logger = airbrake.getLogger(api_key=*****, project_id=12345, host="https://self-hosted.errbit.example.com/")

adding the AirbrakeHandler to your existing logger

import logging

import airbrake

yourlogger = logging.getLogger(__name__)
yourlogger.addHandler(airbrake.AirbrakeHandler())

by default, the AirbrakeHandler only handles logs level ERROR (40) and above

Additional Options

More options are available to configure this library.

For example, you can set the environment to add more context to your errors. One way is by setting the AIRBRAKE_ENVIRONMENT env var.

export AIRBRAKE_ENVIRONMENT=staging

Or you can set it more explicitly when you instantiate the logger.

import airbrake

logger = airbrake.getLogger(api_key=*****, project_id=12345, environment='production')

The available options are:

  • environment, defaults to env var AIRBRAKE_ENVIRONMENT
  • host, defaults to env var AIRBRAKE_HOST or https://api.airbrake.io
  • root_directory, defaults to None
  • timeout, defaults to 5. (Number of seconds before each request times out)
  • send_uncaught_exc, defaults to True (Whether or not to send uncaught exceptions)

giving your exceptions more context

import airbrake

logger = airbrake.getLogger()

def bake(**goods):
    try:
        temp = goods['temperature']
    except KeyError as exc:
        logger.error("No temperature defined!", extra=goods)

Setting severity

[Severity][what-is-severity] allows categorizing how severe an error is. By default, it's set to error. To redefine severity, simply build_notice with the needed severity value. For example:

notice = airbrake.build_notice(exception, severity="critical")
airbrake.notify(notice)

Using this library without a logger

You can create an instance of the notifier directly, and send errors inside exception blocks.

from airbrake.notifier import Airbrake

ab = Airbrake(project_id=1234, api_key='fake')

try:
    amazing_code()
except ValueError as e:
    ab.notify(e)
except:
    # capture all other errors
    ab.capture()

Running Tests Manually

Create your environment and install the test requirements

virtualenv venv
source venv/bin/activate
pip install .
python setup.py test

To run via nose (unit/integration tests):

source venv/bin/activate
pip install -r ./test-requirements.txt
source venv/bin/activate
nosetests

Run all tests, including multi-env syntax, and coverage tests.

pip install tox
tox -v --recreate

It's suggested to make sure tox will pass, as CI runs this. tox needs to pass before any PRs are merged.


The airbrake.io api docs used to implement airbrake-python are here: https://airbrake.io/docs/api/

[[what-is-severity]: https://airbrake.io/docs/airbrake-faq/what-is-severity/]

Release files for airbrake 2.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for airbrake 2.2.0
File Size Uploaded
airbrake-2.2.0.tar.gz 15.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for airbrake 2.2.0
File Interpreter ABI Platform
airbrake-2.2.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 31.5 kB

Release files / airbrake-2.2.0.tar.gz

Download URL airbrake-2.2.0.tar.gz
Size 15.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d35e909f7ab4110c09edaca85ea1a9eb0782c20cdd1efa759bf1af7f2cb40b0f
BLAKE2b-256 checksum
How to use checksums
1287cb78d505ec9991089fe65c6ea600688669ec4aeabbb9e267f7c6af778c75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/2.7.16

Release files / airbrake-2.2.0-py2.py3-none-any.whl

Download URL airbrake-2.2.0-py2.py3-none-any.whl
Size 15.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
8f1c16495a0e428cf8862f2a7fac5aff79935887f938657329c880dcafc4affb
BLAKE2b-256 checksum
How to use checksums
d6db58fba94665b1f447aa41059b581c491de39186c39efe0af3f51449a3cd9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/2.7.16

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

1 release file

2.0.0

1 release file

1.3.3

1 release file

1.3.2

2 release files

1.3.1

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.4

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page