Package: airbrake
airbrake-pythonNote. Python 3.4+ are advised to use newAirbrake Python notifierwhich supports async API and code hunks. Python 2.7 users should continue to use this notifier.Airbrakeintegration for python that quickly and easily plugs into your existing code.importairbrakelogger=airbrake.getLogger()try:1/0exceptException:logger.exception("Bad math.")airbrake-python is used most effectively through itslogginghandler, and uses theAirbrake V3 APIfor error reporting.installTo install airbrake-python, run:$pipinstall-UairbrakesetupThe easiest way to get set up is with a few environment variables:exportAIRBRAKE_API_KEY=*****exportAIRBRAKE_PROJECT_ID=12345exportAIRBRAKE_ENVIRONMENT=devand you're done!Otherwise, you can instantiate yourAirbrakeHandlerby passing these values as arguments to thegetLogger()helper:importairbrakelogger=airbrake.getLogger(api_key=*****,project_id=12345)try:1/0exceptException: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)AirbrakeEnterpriseand self-hosted alternatives, such asErrbit, provide a compatible API.You can configure a different endpoint than the default (https://api.airbrake.io) by either:Setting an environment variable:exportAIRBRAKE_HOST=https://self-hosted.errbit.example.com/Or passing ahostargument to thegetLogger()helper:importairbrakelogger=airbrake.getLogger(api_key=*****,project_id=12345,host="https://self-hosted.errbit.example.com/")adding the AirbrakeHandler to your existing loggerimportloggingimportairbrakeyourlogger=logging.getLogger(__name__)yourlogger.addHandler(airbrake.AirbrakeHandler())by default, theAirbrakeHandleronly handles logs level ERROR (40) and aboveAdditional OptionsMore 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=stagingOr you can set it more explicitly when you instantiate the logger.importairbrakelogger=airbrake.getLogger(api_key=*****,project_id=12345,environment='production')The available options are:environment, defaults to env varAIRBRAKE_ENVIRONMENThost, defaults to env varAIRBRAKE_HOSTorhttps://api.airbrake.ioroot_directory, defaults to Nonetimeout, 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 contextimportairbrakelogger=airbrake.getLogger()defbake(**goods):try:temp=goods['temperature']exceptKeyErrorasexc: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 toerror. To redefine severity, simplybuild_noticewith
the needed severity value. For example:notice=airbrake.build_notice(exception,severity="critical")airbrake.notify(notice)Using this library without a loggerYou can create an instance of the notifier directly, and send
errors inside exception blocks.fromairbrake.notifierimportAirbrakeab=Airbrake(project_id=1234,api_key='fake')try:amazing_code()exceptValueErrorase:ab.notify(e)except:# capture all other errorsab.capture()Running Tests ManuallyCreate your environment and install the test requirementsvirtualenv venv
source venv/bin/activate
pip install .
python setup.py testTo run via nose (unit/integration tests):source venv/bin/activate
pip install -r ./test-requirements.txt
source venv/bin/activate
nosetestsRun all tests, including multi-env syntax, and coverage tests.pip install tox
tox -v --recreateIt's suggested to make sure tox will pass, as CI runs this.
tox needs to pass before any PRs are merged.Theairbrake.ioapi 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/]