oops报告模型和默认分配/[de]序列化。

oops的Python项目详细描述


**************************
python oops:error reports
***********************


copyright(c)2011,canonical ltd


此程序是免费软件:您可以根据发布的GNU Lesser General Public许可证的条款重新分发和/或修改它。通过
自由软件基金会,版本3只。
BR/>此程序被分发,希望它是有用的,
但没有任何保证;甚至没有隐含的保证:BR/>适销性或适合特定用途。有关详细信息,请参阅
GNU Lesser General Public许可证。

如果没有,请参阅<;http://www.gnu.org/licenses/>;
gnu lesser general public license version 3(请参阅文件许可证)。


oops项目提供内存模型和基本序列化,
反序列化和分配oops报告。oops报告是关于一个软件出错的报告……因此,很少直接使用"oops":)


此核心包:大多数希望
生成oops报告的程序或服务都将通过特定于框架的适配器(例如
python-oops\u wsgi)来执行此操作。



dependencies
=

*python 2.6+或3.3+
*pytz(http://ppython.org/pypi/pytz/)


testing dependencies
===

*subunit(http://pypi.python.org/pypi/python-subunit)(可选)


*testtools(http://pypi.python.org/pypi/testtools)

用法
==

l已知密钥,但只要添加所需的额外密钥即可扩展。唯一的限制是
生成的dict必须是bson serializable:这是保存
新序列化程序的标准。一些现有的序列化程序无法处理这种程度的可扩展性,并将忽略其他键,和/或在键上引发错误
它们预期但包含意外数据。

典型用法:

*初始化脚本/应用程序/服务器时,创建一个配置对象:


>;>>从OOPS导入配置
>;>config=config()

*新报表将基于模板报表::

>;>config.template
{}

*您可以编辑模板报表(就像所有报表都是一个dict)::

>;config.template['branch_nick']='mybranch'
>>>>>config.template['appname']='demo'

*您可以提供回调(例如,在创建oops时捕获进程内存使用情况,或者覆盖/调整由先前回调收集的信息):

>;>;mycallback=lambda report,context:none
>;>;config.on_create.append(mycallback)

context参数也只是dict,传递给所有on_create
回调,与报表类似。这用于支持将信息
传递到on_create挂钩。例如,exc_info键用于传递有关正在记录的异常(如果捕获到异常)的
信息。


*稍后,当出现错误并希望创建oops时
报告::

>>report=config.create(context=dict(exc_info=sys.exc_info()))
>;>;报告
{appname':'demo','branch'nick':'mybranch'}

*然后将其发送存储:

>;>;配置发布(报告)
[]


*请注意,发布返回一个列表-列表中的每个项都是由特定reposi分配的id
收到报告的保守党人。(id分配由存储库决定)。如果设置了report['id'],则发布服务器应尝试使用该id。这将自动设置为上一个发布服务器返回的ID。

如果发布服务器不返回任何ID,则EPORT已筛选,未传递给任何
发布者(有关详细信息,请参阅API文档)。

>;>;>;报表中的"ID"
false
>;>;def demo_publish(report):
…return['id 1']
>;>;config.publisher=demo_publish
>;>;config.publish(report)
['id 1']
>;>;report['id']
'id 1'

*pprint廑to廑stream publisher将在对报表进行
pprint后打印出报表。这对交互使用非常有用。

*相关的项目oops_datedir_repo包含一个基于磁盘的本地存储库,可以将其用作发布服务器。


稍后将提供更多信息。


ependencies可用,或者将工作目录添加到pythonpath中。





development
==


upstream development在https://launchpad.net/python oops进行。
若依赖项不立即可用,则y您可以使用./bootstrap.py创建bin/buildout,然后使用
bin/py获取具有可用依赖项的python解释器。


要运行测试,请使用您选择的运行程序,测试套件是
oops.tests.test_suite。

例如::

$bin/py-m testtools.run oops.tests.test_suite

另外,您可以使用testrepository中的testr命令:

$testr run

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

推荐PyPI第三方库


热门话题
java JavaFX TableView更新单元格,不更新对象值   在扫描器中使用分隔符的java   java OkHttp 4.9.2,连接无法重用,导致端口耗尽   eclipse中的c JNI:运行Java代码   java是否在出厂的所有硬件设备中都有/mnt/sdcard/Android/data文件夹(或等效文件夹)?   Java,在eclipse中访问资源文件夹中的图像   java为什么Bluemix dashDB操作抛出SqlSyntaxErrorException,SQLCODE=1667?   JavaHtmlUnitWebClient。getPage不处理javascript   Google API认证的java问题   java如何将JSON数组反序列化为Apache beam PCollection<javaObject>   ServerSocket停止接收命令,java/安卓   来自Java类的安卓 Toast消息   java如何自动重新加载应用程序引擎开发服务器?   java是否可以尝试/捕获一些东西来检查是否抛出了异常?   java如何做到这一点当我按下load game时,它不仅会加载信息,还会将您带到游戏中?   Java选项Xmx代表什么?   Java映射,它在插入时打印值   设置“ulimit c unlimited”后,java无法生成系统核心转储