用于airbrake的python异常通知程序

pybrake的Python项目详细描述


用于airbrake的python异常通知程序

Build Status

安装

pybrake需要python 3.4+。

pip install -U pybrake

配置

要配置pybrake通知程序,需要airbrake项目的idapi_key,这些可以从项目的设置页获得。

importpybrakenotifier=pybrake.Notifier(project_id=123,project_key='FIXME',environment='production')

向空气制动发送错误

try:raiseValueError('hello')exceptExceptionaserr:notifier.notify(err)

同步发送错误

默认情况下,notify函数使用 ThreadPoolExecutor并返回一个concurrent.futures.Future,同步的 api还可用于notify_sync函数:

notice=notifier.notify_sync(err)if'id'innotice:print(notice['id'])else:print(notice['error'])

添加自定义参数

要设置自定义参数,您可以在不同的步骤中生成和发送通知:

notice=notifier.build_notice(err)notice['params']['myparam']='myvalue'notifier.send_notice(notice)

在发送到airbrake之前,还可以将自定义参数添加到每个错误通知中 使用add_filter函数。

defmy_filter(notice):notice['params']['myparam']='myvalue'returnnoticenotifier.add_filter(my_filter)

忽略通知

应用程序中可能会抛出一些您没有 有兴趣发送到airbrake,您可以使用add_filter忽略它们。 功能。

defmy_filter(notice):ifnotice['context']['environment']=='development':# Ignore notices in development environment.returnNonereturnnoticenotifier.add_filter(my_filter)

过滤键

使用keys_blacklist选项,您可以指定包含必须过滤掉的敏感信息的密钥列表,例如:

notifier=pybrake.Notifier(...keys_blacklist=['password',# exact matchre.compile('secret'),# regexp match],)

日志集成

pybrake提供一个日志处理程序,将日志发送到airbrake。

importloggingimportpybrakeairbrake_handler=pybrake.LoggingHandler(notifier=notifier,level=logging.ERROR)logger=logging.getLogger('test')logger.addHandler(airbrake_handler)logger.error('something bad happened')

django集成

首先需要将pybrake配置添加到djangosettings.py文件中 使用项目的idapi_key

AIRBRAKE=dict(project_id=123,project_key='FIXME',)

下一步是激活airbrake中间件。

MIDDLEWARE=[...'pybrake.django.AirbrakeMiddleware',]

最后一步是配置airbrake日志处理程序。在那之后你是 准备好从Django应用程序向Airbrake报告错误。

LOGGING={'version':1,'disable_existing_loggers':False,'handlers':{'airbrake':{'level':'ERROR','class':'pybrake.LoggingHandler',},},'loggers':{'app':{'handlers':['airbrake'],'level':'ERROR','propagate':True,},},}

烧瓶积分

烧瓶集成利用烧瓶信号,因此需要闪光灯 图书馆。

fromflaskimportFlaskimportpybrake.flaskapp=Flask(__name__)app.config['PYBRAKE']=dict(project_id=123,project_key='FIXME',)app=pybrake.flask.init_app(app)

aiohttp集成(python 3.5+)

为您的web应用程序设置airbrake的中间件和配置:

# app.pyfromaiohttpimportwebfrompybrake.aiohttpimportcreate_airbrake_middlewareairbrake_middleware=create_airbrake_middleware()app=web.Application(middlewares=[airbrake_middleware])app['airbrake_config']=dict(project_id=123,project_key='FIXME',environment='production'# optional)

此外,还可以将自定义处理程序传递给create_airbrake_middleware

# middlewares.pyimportaiohttp_jinja2frompybrake.aiohttpimportcreate_airbrake_middlewareasyncdefhandle_404(request):returnaiohttp_jinja2.render_template('404.html',request,{})asyncdefhandle_500(request):returnaiohttp_jinja2.render_template('500.html',request,{})defsetup_middlewares(app):airbrake_middleware=create_airbrake_middleware({404:handle_404,500:handle_500})app.middlewares.append(airbrake_middleware)

禁用pybrake日志

通过将日志记录级别设置为 logging.CRITICAL

importlogginglogging.getLogger("pybrake").setLevel(logging.CRITICAL)

开发

运行测试

pip install -r test-requirements.txt
pytest

上传到pypi

python setup.py sdist upload

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JAVA Tictoe Minimax算法不断引发异常   java弹性时间计算器字符串开关   java从表单post操作中检索值   java Selenium webdriver无法在youtube上找到元素   java如何自动填写XFA(PDF)表单?   java为什么我的秒表程序不能运行?   raspberry pi禁用java中的其他声音   java如何配置web。xml,glassfishweb。JSF的xml文件?   使用浏览器运行自动测试时出现java错误。如何运行它?   java如何阻止Swing程序在每次向JTextArea添加文本时调整组件的大小   javajavax。注射注射无效   java如何改进Solaris服务器配置   java如何在elasticsearch后端脱机时处理Hibernate搜索启动   java TCPsocket的延迟很差,除非持续流式传输