错误数据异常记录。

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运行openssl命令?   不使用线程安全类(如AtomicInteger和SynchronizedList)的java ProducerConsumer问题   匹配字符串的java模式   在java中使用泛型接口作为返回类型   java将可能具有序列化JSON值的hashmap作为节点添加到JSON字符串中   Eclipse无法从Java8流推断正确的类型   java无法了解标准JButton的大小   java我能用一个循环优化这个函数吗(在第一种方法中)?   Apache CXF中基于WebSocket的java SOAP?   java想要运行奇偶和求和三步   矩阵上随机元素的java集值   java布尔相等:0==a,操作数顺序重要吗?   java Eclipse不会退出我的插件   java如何在spring的SOAP拦截器中获取HttpServletRequest和HttpServletResponse