跳转到主要内容

airbrake.io的Python SDK

项目描述

airbrake-python

注意. 建议Python 3.4+使用新的 Airbrake Python通知器,它支持异步API和代码块。Python 2.7用户应继续使用此通知器。

Airbrake 的Python集成,可以快速轻松地集成到现有的代码中。

import airbrake

logger = airbrake.getLogger()

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

airbrake-python最有效的方法是通过其日志处理器,并使用Airbrake V3 API进行错误报告。

安装

要安装airbrake-python,运行

$ pip install -U airbrake

setup

通过设置一些环境变量来配置是最简单的方法

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

完成后!

否则,您可以通过将这些值作为参数传递给getLogger()辅助函数来实例化您的AirbrakeHandler

import airbrake

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

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

默认情况下,airbrake会捕获并发送未捕获的异常。要避免这种行为,请使用send_uncaught_exc选项:logger = airbrake.getLogger(api_key=*****, project_id=12345, send_uncaught_exc=False)

为Airbrake On-Premise和其他兼容的后端(例如Errbit)进行设置

Airbrake 企业版和自托管替代方案,如Errbit,提供兼容的API。

您可以通过以下方式设置一个不同于默认值(https://api.airbrake.io)的端点

  • 设置环境变量
export AIRBRAKE_HOST=https://self-hosted.errbit.example.com/
  • 或将host参数传递给getLogger()辅助函数
import airbrake

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

将AirbrakeHandler添加到您现有的日志记录器中

import logging

import airbrake

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

默认情况下,AirbrakeHandler仅处理ERROR(40)级别及以上的日志

其他选项

该库还有更多选项可供配置。

例如,您可以通过设置环境变量来为错误添加更多上下文。一种方法是将AIRBRAKE_ENVIRONMENT环境变量设置。

export AIRBRAKE_ENVIRONMENT=staging

或者,您可以在实例化日志记录器时更明确地设置它。

import airbrake

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

可用选项包括

  • 环境,默认为环境变量AIRBRAKE_ENVIRONMENT
  • 主机,默认为环境变量AIRBRAKE_HOSThttps://api.airbrake.io
  • root_directory,默认为None
  • timeout,默认为5。(每个请求超时前的秒数)
  • send_uncaught_exc,默认为True(是否发送未捕获的异常)

为您的异常提供更多上下文

import airbrake

logger = airbrake.getLogger()

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

设置严重性

[严重性][什么是严重性]允许对错误的严重性进行分类。默认情况下,它设置为error。要重新定义严重性,只需使用所需严重值调用build_notice。例如

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

在不使用日志记录器的情况下使用此库

您可以直接创建通知器的实例,并在异常块中发送错误。

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()

手动运行测试

创建您的环境并安装测试要求

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

要通过nose(单元/集成测试)运行

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

运行所有测试,包括多环境语法和覆盖率测试。

pip install tox
tox -v --recreate

建议确保tox可以通过,因为CI运行此操作。在合并任何PR之前,tox需要通过。


实现airbrake-python所使用的airbrake.io API文档在此:https://airbrake.io/docs/api/

[[什么是严重性]: https://airbrake.io/docs/airbrake-faq/what-is-severity/]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分布

airbrake-2.2.0.tar.gz (15.6 kB 查看哈希值)

上传时间: 源代码

构建分发版

airbrake-2.2.0-py2.py3-none-any.whl (15.9 kB 查看哈希值)

上传时间: Python 2 Python 3