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第三方库


热门话题
junit有没有办法在Java中重新初始化静态类?   在浏览器中点击应用程序时java Play框架挂起   文件Java错误中的NullPointerException   使用Java中的SNMP查找网络中计算机的登录名   java包装服务器引导程序已弃用,有什么替代方案?   当客户在等待理发时,java信号量值是否存在问题?   java如何使用JavaMail仅下载特定类型的附件   如何在java中将十进制转换为十六进制   java Slick2D粒子系统不会生成粒子   java检测更改事件来自何处   将Java集合类型参数类设置为数组   java如何从eclipse导出为可运行JAR文件?   java EntityManager对象未注入Glassfish和Spring   swing从actionPerformed和actionListener Java返回字符串   java在给定另一个等价键对象的情况下获取映射项的当前键   无论输入如何,java网络都会产生相同的输出