canary是一个小库,用于记录异常并通过zeromq将异常从python发送到logstash。

canar的Python项目详细描述


canary是一个小型库,用于记录异常并通过ZeroMQ将异常从python发送到logstash

travis

示例用法

假设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。

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

推荐PyPI第三方库


热门话题
多次调用预期方法的java捕获参数(EasyMock)   java我试图得到某个学生的平均值,但它将所有值相加   使用Java更新文件中所有出现的字符串   java从依赖包导入Spring配置(*.xml)   在Java中,如何从不同的偏移量读取大块的字符串文件?   java 安卓 studio未在windows 8中运行   java getResourceAsStream()不读取任何内容   java Google Collections 1.0是否已经专业化?   模型视图控制器ASP。NET母版页在Java中的等效性   计时器TimerTask类在java中只能运行一次   多级继承和foreach Java循环   excel csv到xsl java,有一列带有某种货币(如$400)   java在来电时多次更改BlackBerry的callIncoming()   java通过JNLP启动JavaFX2.0应用程序会引发异常