python 2.6/2.7和python 3的官方raygun提供程序+

raygun4py_alt的Python项目详细描述


Raygun4py
==


…图片:https://travis-ci.org/mindscapehq/raygun4py.svg?branch=master
:目标:https://travis-ci.org/mindscapehq/raygun4py?分支=主

…图片::https://coveralls.io/repos/mindscapeHQ/raygun4py/badge.svg?branch=master
:目标:https://coveralls.io/r/mindscapeHQ/raygun4py?branch=master


**python 2.6/2.7**、**python 3+**和**pypy**的官方Raygun提供程序



installation
==


最简单的安装方法是作为PIP包安装,因为它可以从pypi获得。在命令行中,运行::

$pip install raygun4py


,然后导入并实例化模块:

。代码::python

运行:

$raygun4py test your_-apikey

replace:code:`your_-apikey`用raygun仪表板上列出的代码替换。这将导致生成并发送测试异常。


用法
=



自动发送当前异常,如下所示:

…代码::python

尝试:
引发异常("foo")
除了:
client.send_exception()


有关发送的更多方法,请参见"发送函数"。




uncought exception handler
除了自定义逻辑之外,您可以为sys提供回调函数。excepthook:

…代码::python

def handle_exception(exc_type,exc_value,exc_traceback):
sender=raygunprovider.raygunssender("您的apikey")
sender.send_exception(exc_info=(exc_type,exc_value,exc_traceback))


sys.excepthook=handle_exception


logging
----


>您还可以使用记录器发送异常:

。代码::python

logger=logging.getlogger("mylogger")
rghandler=raygunprovider.raygunhandler("您的apikey")
logger.addhandler(rghandler)

def log_exception(exc_type,exc_value,exc_traceback):
logger.error("发生异常",exc_info=(exc_type,exc_value,exc_traceback))


这使用内置的:代码:`raygunhandler`。如果需要自定义发送行为,可以基于该类提供自己的处理程序实现。



web frameworks
----



django
+++代码::python

中间件类=(
"raygun4py.middleware.django.provider"


raygun4py配置={
"api密钥":"在此处粘贴api密钥"



提供程序支持的全套选项可以用相同的方式声明:

…代码::python

raygun4py-config={
"api-key":"在此处粘贴api-key",
"http-timeout":10.0,
"proxy":无,
"send-callback"之前:无,
"grouping-key-callback":无,
"filtered-key":[],
"忽略的异常":[],
"传输全局变量":真,
"传输本地变量":真,
"用户版本":"未定义",
"用户":无
}


代码::python

from flask import flask,current廑app
from raygun4py.middleware import flask


flask.provider(app,'your廑apikey').attach()

wsgi
++


使用**Tornado**的示例,它将拾取发生在wsgi管道中的异常:

…代码::python

from raygun4py.middleware import wsgi


class main handler(tornado.web.requesthandler):

raise exception('init')

def main():
settings={
"默认处理程序"类:mainhandler
}

application=tornado.web.application([
(r"/",mainhandler)、
],**设置)


wsgi app=tornado.wsgi.wsgiadapter(application)
raygun_wrapp=wsgi.provider(wsgiapp,"your_apikey")
server=wsgiref.simple_server.make_server('',8888,raygun_wrapp)
server.serve_forever()

请注意,许多框架(tornado、pryramid、gevent等)都将吞下其域中发生的异常。

如果您的框架缺少中间件,请通知我们,或者可以随意提交请求。

您可以在字典中传递这些和标题(请参见:code:`sample.py`)。


现在应该支持运行在google app engine上的代码-您可以在本地测试它,已报告在部署后工作(由于需要SSL支持,后者当前需要付费帐户)。


提供程序的选项(默认值如下所示):

…代码::python


from raygun4py import raygunprovider

'http_timeout':10.0,
'proxy':none,
'before_send_callback':none,
'grouping_key_callback':none,
'filtered_keys':[],
"忽略的异常":[],
"传输全局变量":真,
"传输本地变量":真,
"用户版本":"未定义",
"用户":无
})

如果将它们的选项设置为false,则相应的变量将不会与异常有效载荷一起发送。



|异常
++——+——+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————++——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————参数是可选的。**

从catch块中调用此函数以将当前异常发送到raygun:

…代码::python自动获取当前异常=client.send嫒exception(exception=exception)




*:代码:`exception`应该是exception类型的子类。如果要手动将异常对象传输到raygun,请将此传入。
*:code:`exc_info`应是从以下位置返回的3元组:code:`sys.exc_info()`。如果您希望在send_exception()之外的其他代码中使用此元组,请将其传入。


*:code:`tags`是与您可以定义的当前上下文相关的标记列表。
*:code:`usercustomdata`是一个dict还包含自定义键值。
*:代码:`http request`是http请求数据-有关对象的预期格式,请参见"sample.py"。


config和data函数|参数如果要从负载中筛选敏感数据,请键入
+==+==+=+==+===+===+===+===+===+
筛选键列表
+————+——+———————————————————————————————————————————————————————————————————————————————————————————————————把钥匙交给雷根,把钥匙清单交给他。有效负载中的任何匹配键的值都将替换为:code:`<;filtered>;`-对密码有用,信用卡数据等

+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|
+————————————————————————————————————————————————————————————————————————————————————传递给发送与此列表中的类型匹配的异常的任何异常都将不会被发送。

+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|在"U before_send_callback function
+———————————————————————————————————————————————————————————————————————————————————————这允许您完全定制发送的数据,就在它发生之前。

+—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|
+———————————————————————————————————————————————————————————————————————————————————————回调应采用一个参数,即raygunmessage的实例,并返回一个长度介于1到100个字符之间的字符串(有关详细信息,请参阅下面的"自定义分组逻辑"。

+————————————————————类型|
+====+==+==+==+===+==+==+====+======+===+
设置代理主机字符串
+——+——+——+———————————————————————————————————————————————————————————————————————————————|
+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————|键入
+==+==+===+===+====+====+====+===+====+
设置版本版本字符串
+———————————————————————————————————————————————————————————————————————————————————————————————————这将在仪表板上可见,并可用于筛选特定版本的异常、部署跟踪等。

+———————————————————————————————————————————————————————————————-————+——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————将显示在Raygun Web应用程序中。你传来的口述应该是这样的:

…代码::python

client.set廑user({
"名字":"foo",
"全名":"foo bar",
"电子邮件":"foo@bar.com",
"isanonymous":false,
"标识符":"foo@bar.com"
})

"标识符"应该是用于标识用户的任何唯一键,例如电子邮件地址。这将用于创建受影响的唯一用户的计数。如果您希望匿名,您可以生成和存储一个uuid或散列一个或多个其唯一的登录数据字段,如果可用。

回调的一个参数是raygunmessage(python[2/3]/raygunmsgs.py)的实例,回调应该返回一个字符串。

raygunmessage实例包含将要发送到raygun api的所有错误和状态数据。在回调中,可以检查此raygunmessage,将要分组的字段散列在一起,然后返回一个字符串作为分组键。

此字符串的长度必须介于1到100个字符之间。如果未设置回调或字符串无效,将使用默认的自动分组。

例如:

。代码::python

class myclass(对象):

def my_callback(self,raygun_消息):
返回raygun_消息。get_error().message[:100]仅使用基于原始消息的分组


def create_raygun_and_bind_callback(self):
sender=raygunprovider.raygunsender('api_key')
sender.on_grouping_key(self.my_callback)

当出现异常时,上面的raygunssender将使用my_callback执行自定义分组逻辑。上述逻辑将仅使用异常消息-您将希望使用更复杂的方法,通常涉及清理或忽略数据。


对于python 3,链接异常
----


,链式异常受支持,并与它们的回溯一起自动发送。

当处理另一个异常时引发异常时会发生这种情况-请参见tests_functional.py以获取示例。


疑难解答将消息发送到raygun,`print client.send()`(如test.py的第27行所示)。如果输入了无效的API密钥,则返回403;如果成功,则返回202。

`_

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

推荐PyPI第三方库


热门话题
java如何克服带有空值的不可空bean级验证   “此行有多个标记”的authenticateUser上的java MySQLConnection错误   java处理Jackson异常   java Netbeans编辑器如何知道文件在撤消后不会被修改?   目标C相当于Java的ArrayList   java当需要int时,可以将short传递给方法调用吗?   drawString()方法上的java MouseListener   java服务器socket是执行此操作的最佳选项   java需要单个匹配bean,但找到了2:org。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerMapping   如何在Java中执行Windows命令?   安卓应用程序的java文件主机   java将所有spring引导属性都设置在内。将yml文件转换为系统属性   Java邮件中的html内联链接在邮件客户端中不起作用   Java二进制文件的bazel版本控制   java如何在自定义ListView中使用Intent   java(Spring MVC+Hibernate 4+Test 4)自动连线DAO返回NULL   java一次add()调用可以在Solr服务器中索引多少文档?   java如何获取Avro GenericRecord大小