跳转到主要内容

canary是一个用于将Python异常记录和发送到logstash的小型库,通过ZeroMQ进行。

项目描述

canary是一个用于将Python异常记录和发送到logstash的小型库,通过ZeroMQ进行。

travis

示例用法

假设logstash正在运行并绑定到0mq套接字在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应用程序抛出的异常,请使用canary.middleware.LogStashMiddleware包装您的WSGI应用程序

from logging.config import dictConfig as load_logging_config
from wsgiref.simple_server import make_server
from wsgiref.util import setup_testing_defaults

from canary.middleware import LogStashMiddleware


def app(environ, start_response):
    setup_testing_defaults(environ)
    assert True is False

if __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 账户。

贡献的一般做法是 分叉 canary 并在 next 分支中进行更改。完成之后,发送拉取请求,您的补丁将被审查。

测试需要 tox,可以使用 $ pip install tox && tox 运行。

所有贡献必须

  • 包含相应的测试。

  • 如果更改或添加了新功能或 API 方法,则需要包含 API 文档。

  • (通常)符合 PEP8。

  • 不要破坏测试或构建。在提交拉取请求之前,请确保在多个 Python 版本中所有测试仍然通过。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

canary-0.1.4.tar.gz (6.9 kB 查看哈希值)

上传时间

支持者