canary是一个小库,用于记录异常并通过zeromq将异常从python发送到logstash。
canar的Python项目详细描述
canary是一个小型库,用于记录异常并通过ZeroMQ将异常从python发送到logstash。
示例用法
假设logstash正在运行并绑定到位于 tcp://0.0.0.0:2120:
$ cat logstash.conf input { zeromq { type => 'python-exception' mode => 'server' topology => 'pushpull' address => 'tcp://0.0.0.0:2120' charset => 'UTF-8' } } output { debug => true }
…要报告wsgi应用程序引发的异常,请包装wsgi应用程序 使用canary.middleware.LogStashMiddleware:
fromlogging.configimportdictConfigasload_logging_configfromwsgiref.simple_serverimportmake_serverfromwsgiref.utilimportsetup_testing_defaultsfromcanary.middlewareimportLogStashMiddlewaredefapp(environ,start_response):setup_testing_defaults(environ)assertTrueisFalseif__name__=='__main__':load_logging_config({'version':1,'loggers':{'canary':{'level':'ERROR','handlers':['zeromq']}},'handlers':{'zeromq':{'level':'ERROR','class':'canary.handler.ZeroMQHandler','address':'tcp://127.0.0.1:2120','formatter':'logstash'}},'formatters':{'logstash':{'()':'canary.format.LogstashFormatter'}}})httpd=make_server('',8080,LogStashMiddleware(app))print"Serving on port 8080..."httpd.serve_forever()
排除某些例外
您可能希望阻止canary记录某些类型的异常。 为此,请将异常列表传递到LogStashMiddleware 构造器:
app=LogStashMiddleware(app,ignored_exceptions=[SomePrivateException])
过滤敏感数据
canary使用来自 wsgienviron。但有时,这些数据可能包含敏感的细节, 比如客户的登录凭证。canary使筛选某些 从它生成的日志中请求参数:
app=LogStashMiddleware(app,sensitive_keys=['password','cc_number'])
开发
源托管在GitHub。 在GitHub Issues上报告问题和功能请求。
要修复错误或向canary添加功能,需要github帐户。
贡献的一般做法是fork canary并在 next分支。完成后,send a pull request您的补丁将 被审查。
测试需要tox,可以使用$ pip install tox && tox运行。
所有捐款必须:
- 包括附带的测试。
- 如果更改/添加了新功能或api方法,请包括api文档。
- (通常)遵守PEP8。
- 不会破坏测试或生成。在发出请求之前,请确保 测试仍然通过多个版本的python。