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
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