-2

对于我的 python/django 站点,我需要构建一个“仪表板”,它将向我更新数十个错误/心跳/意外事件的状态。

我目前正在通过让 Django 站点向管理员帐户发送电子邮件来跟踪几种类型的“事件”:
1)通常应该发生的事情出错了。我们每隔几个小时将文件同步到不同的服务和其他机器,当出现问题时我会发送错误电子邮件。
2)当应该发生的事情实际发生时。有时,第 1 项中的事件失败得如此可怕,以至于他们甚至不发送电子邮件(尝试:除了:围绕一个事件应该始终有效,但可以从 crontab 中删除内容,系统配置可能会在不发生的地方被撞歪运行等,我什至不会收到错误电子邮件,并且缺少成功/心跳电子邮件会让我知道应该发生的事情没有发生。)
3) 当任何意外发生时。我们对后端操作的运行方式做了很多假设,如果违反了这些假设中的任何一个(例如,我们发现两个具有相同电子邮件地址的用户),我们想知道它。这些事件不一定是错误,更像是要调查的警告。


所以我想建立一个仪表板,我可以很容易地从 python/django 更新,让我鸟瞰所有这些类型的活动,这样我就可以停止每周发送数百封电子邮件(这已经无法管理了。)

4

2 回答 2

3

听起来您想创建一个输出到网页的基本日志记录系统。

因此,您可以编写一个简单的应用程序,例如,每当网站上发生某些事情时,systemevents它都会创建一个记录。Event您将添加一个信号挂钩,以便在站点其余部分的任何地方您都可以编写如下代码:

from systemevents.signals import record_event

...

try:
    # code goes here
except Exception, inst:
    record_event("Error occurred while taunting %s: %s" % (obj, inst,), type="Error")
else:
    record_event("Successfully taunted %s" % (obj, ), type="Success")

然后你可以很容易地创建一个列出这些事件的视图。

但是,请记住,这会增加一层非常有问题的复杂性。如果错误出在您的数据库中怎么办?那么每次你尝试记录一个错误事件时,都会发生另一个错误!

最好使用内置日志系统之类的东西来创建基于文本的日志文件,然后创建一些可以导入该文本文件并以更具可读性的方式进行布局的东西。

另一个提示:为了改变 Django 处理异常的方式,你必须为 500 errors 编写一个自定义视图。如果使用systemevents,您将编写如下内容:

from django.views.defaults import server_error
def custom_error_view(request)
    try:
        import sys
        type, value, tb = sys.exc_info()    
        error_message = "" # create an error message from the values above
        record_event("Error occurred: %s" % (error_message,), type="Error")
    except Exception:
        pass
    return server_error(request)

请注意,此代码均未经过正确性测试。它只是作为一个指南。

于 2010-11-24T20:21:28.920 回答
2

您是否尝试过查看 django-sentry? http://dcramer.github.com/django-sentry/

于 2010-11-24T17:17:04.440 回答