错误数据异常记录。

errordite的Python项目详细描述


这个应用程序提供了python和errodite(一个集中的 错误日志和管理服务,与哨兵不同,但有更多 围绕错误分类和管理的功能。

应用程序以标准python日志处理程序的形式提供。 为了用errordite记录异常,只需使用logging.errorlogging.exceptionexcept块中:

>>> import logging
>>> import errordite
>>> logger = logging.getLogger(__name__)
>>> logger.addHandler(errordite.ErrorditeHandler('token'))
>>> try:
...    raise Exception()
... except:
...    # handler uses sys.exc_info() so no need to pass
...    # exception info explicitly.
...    logging.error("Something went wrong")
>>>

实现的细节最好在代码本身中找到-这是公平的 不言而喻。

有关sys.exc_info()和sys.exc_clear()的重要信息

这个日志处理程序被显式地设计为捕获和发布python 例外情况。它不是一个通用的记录器,因此它依赖于 sys.exc_info()以确定是否有要报告的内容。这个罐头 如果将项目记录为没有 附加了显式异常,但以前的异常已被吞入。

在下面的例子中,我们捕捉并吞下了DoNoToTristor错误 因为它是已知的代码路径:

try:
    .. do something that raises a known error - e.g. model.DoesNotExist
except model.DoesNotExist:
    .. we half expected this, so just ignore it for now

但是,异常尚未清除,如果调用sys.exc_info() 进一步,它仍然会返回DoNoTeXistor错误。再往前一点 我们的示例记录了一个业务异常(尝试签出否定的 篮值),但不附加任何显式python错误:

.. continue on with the method

.. some time later

if basket_total < 0:
    logger.error("Someone tried to hack our checkout.")

^ {STR 1 } $:在这种情况下,将记录错误异常(DoNoTeXIST)信息。< /强>

解决方法是在except块中调用sys.exc_clear()。 以便显式删除异常。python文档声明:

This function is only needed in only a few obscure situations.

这表明不建议这样做,但是,它们会继续声明:

These include logging and error handling systems that report information on the last or current exception.

作者认为这描述了我们的困境, 因此,sys.exc_clear()的使用是合理的。(也就是说,你也可以 想调查为什么要记录非异常的错误,如果 您会看到这种情况发生。)

安装

该库在pypi上作为“errodite”提供,因此可以是 使用PIP安装:

$ pip install errordite

安装后,您可以导入处理程序:

>>> import errordite
>>> handler = errordite.ErrorditeHandler("your_errordite_token")

配置

要设置有效的errordITehandler必须传入 errodite api令牌,您可以通过在http://www.errordite.com注册获得它

测试

包中有测试-它们可以使用unittest

运行
$ python -m unittest errordite.tests

注意,这些测试会通过连线记录真正的异常,因此您需要 连接到网络以运行它们。您还需要设置本地环境 变量(errordite_token),在测试套件中选取。

如果您是*nix,您可以在命令行中传递此信息:

$ ERRORDITE_TOKEN=123 python -m unittest errordite.tests

如果您在windows上,则需要将其显式设置为env var:

c:\> set ERRORDITE_TOKEN=123
c:\> python -m unittest errordite.tests

(这是一种技术,用于防止在 公共回购)

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

推荐PyPI第三方库


热门话题
java根据选择随机设置图标   java如何将Android Studio与本地服务器数据库SQL server 2008连接?   java在点击鼠标后绘制一个椭圆形   java选项窗格相对于其父项的位置   java如何在Android中的switch case中使用String[]输入?   安卓无法从“15.0.1”确定java版本   如果满足特定条件,java是否重置计时器?   java是一个实体类,可以在OOAD中返回其他实体实例吗?   bash将对jar文件| cut | awk和java程序的调用集成到一个统一进程中   Spring安全更新身份验证成功时的最后登录日期   数据库身份验证中基于Java控制台的客户端服务器登录应用程序错误   java Selenium junit测试失败,驱动程序过早获取URL   java LibGdx多点触摸事件混淆   带扫描仪的java打印空间   来自旧版应用程序的java springcloudsleuth头   java如何实现模板设计模式?   java如何比较具有多个值的键的两个映射?   读取时R中的java MemoryError。xlsx