canary是一个用于将Python异常记录和发送到logstash的小型库,通过ZeroMQ进行。
项目描述
canary是一个用于将Python异常记录和发送到logstash的小型库,通过ZeroMQ进行。
示例用法
假设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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ebd565ef561f8974b9ddf11a504c486a936c27fa85bac72768949dcea1847c6b |
|
MD5 | c97e8758971a7a43c72a556501f40535 |
|
BLAKE2b-256 | 32973ab7ee9e2b7e68ad95b7c508203141cdf0174c441c0b1099df84e4e0a206 |