用于airbrake的python异常通知程序
pybrake的Python项目详细描述
用于airbrake的python异常通知程序
安装
pybrake需要python 3.4+。
pip install -U pybrake
配置
要配置pybrake通知程序,需要airbrake项目的id
和
api_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
文件中
使用项目的id
和api_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