django可重用应用程序收集未过期的异常,然后生成压缩的报告,就像在调试模式下得到的那样,并存储在数据库中

django-errorlog的Python项目详细描述


Django错误日志

django可重用应用程序收集未过期的异常,然后生成 comprehansive报告就像在调试模式下得到并存储在 数据库

简介

Django有自己的错误处理机制,它将发送电子邮件到 在设置中配置的管理地址。它起作用了但是有一些 短缺。

  1. 电子邮件中包含的堆栈跟踪与您可以看到的相同 在控制台中。它不包含可变值 对调试有用。
  2. 无法追踪错误,这是一封电子邮件,很难归类, 而且很难追踪状态。
  3. 有时一个同样的错误会给你带来成千上万的电子邮件 API碰巧经常访问。你会浪费很多时间去寻找 与错误不同的错误发生得最多。

本模块通过以下方式解决这些问题。

  1. 我们很喜欢Django BuildinDebug 500页面,它几乎包含了 我们需要调试的所有信息,比如请求信息, 用户、设置、使用本地变量的堆栈跟踪等等 我们需要一个中间件来捕获未处理的异常 只需调用django buildin reporter类来生成完整的 html异常报告,然后存储在数据库中。
  2. 每个错误项都有记录a.固定b.vcs的字段 版本(支持hg和git),您可以在这个bug之后ignoreit 已经解决了。然后它将从unfixed_error列表中消失。
  3. 错误将按异常类型和位置分类 引发异常的位置(location表示python文件路径 以及方法名)。所以在大多数情况下,发生了同样的错误 多次将只显示一次,但计数如何 很多时候都是这样。当错误被忽略时, 相同的错误将被标记为忽略。

此模块已在我公司的网站上运行超过1 一年,帮助解决了上千个错误。

更改日志

2016-12-04:0.1.0初始提交。从网上拆分代码 项目。编写文档,并添加测试。

安装

pip install django-errorlog

然后修改设置

  1. 在已安装的应用程序中添加errorlog
  2. 如果使用django>;=1.10,请插入 ^位于MIDDLEWARES中的{tt4}$。 第一行。
  3. (可选)如果您的django项目位于vcs中(hg或 git),将VCS_SYSTEM = "hg"VCS_SYSTEM = "git"设置为启用 误差转速跟踪。

然后执行python manage.py migrate以设置数据库表。

当您的视图出现500个错误时,将有一个新的日志项 存储。

用法

内置shell命令

>>>fromerrorlog.modelsimportError>>>Error.unfixed_errors{0:<Error:1-/test/2/-ValueError:A>,1:<Error:4-/test/1/-ValueError:B>}>>>error=Error.unfixed_errors[1]>>>error1:<Error:4-/test/1/-ValueError:B>>>># in this repr, the first number is the index to make it easy to select;>>># the second number 4 is the the count of the same error happened;>>># /test/1/ is the uri of the api;>>># ValueError is the exception type;>>># B is the args in the exception.>>>error.vcs_rev# the git/hg version of error, for hg, it's the incremental number that is orderable"1">>>error.ignore()# this command ignore the whole 4 error logs

Django管理

如果使用django buildin admin,则应该能够在 主页。

如果要查看HTML错误报告,则需要构建视图 您可以自己将错误HTML传输到浏览器。

提前使用

您可以使用error.log_exception在一个错误中记录一个特定的错误 一定的范围。

fromerrorlog.modelsimportErrorwithError.log_exception("name",reraise=False):do_something_here()

如果reraise = True,则在记录之后,异常将保持 振作起来。注意,如果数据库原子打开,因为未处理 错误将使django回滚事务,因此此日志将 也被回滚。

如果reraise = False,则它将记录异常,然后停止 提出并继续运行以下代码。它和 以下代码

try:do_something_here()exceptExceptionase:pass

下面是我如何使用它的示例

withError.log_exception("send_email_through_mailgun",reraise=False):response=requests.post(url,parms)content=response.contentstatus_code=response.status_codeifstatus_code!=200:raiseValueError("Mailgun failed")other_stuff()

这样我就可以在mailgun的api返回错误时捕获,并保持 一切都在进行。

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

推荐PyPI第三方库


热门话题
在扩展类中将Java重写为抽象的非抽象方法   java可滚动视图   java Android:隐藏操作栏,保持标签   java如何在Hibernate中使用@Qualifier   java如何在spring MVC中进行Http会话管理以获取数据库中的数据   java如何为TictaToe游戏创建HashMap   java在消息资源文件中查找未使用的值   从源代码构建Kafka时发生java错误   c中的java调用optaplanner DLL#   无法通过Java API访问orientdb函数   任务的java执行失败“:app:ProcessDebuggGoogleService”   java在整个模拟过程中保持代理之间的距离不变   如何在Java中使用BouncyCastle PGP实用程序实现增量加密?   java在安卓中计算画布点的距离   Java回文修订   java在Firebase数据库中存储变量的必要性   java如何使用gquery手势插件在页面上启用文本突出显示?   java如何在Apache camel中使用POST调用REST?