小编典典

你如何在 django 网站上记录服务器错误

all

因此,在进行开发时,我可以设置settings.DEBUGTrue,如果发生错误,我可以看到它的格式很好,具有良好的堆栈跟踪和请求信息。

但是在那种生产网站上,我宁愿使用DEBUG=False并向访问者展示一些标准错误 500 页面,其中包含我目前正在修复这个错误的信息;)
同时我想有一些方法来记录所有这些信息(堆栈跟踪和请求信息)到我服务器上的文件中 -
所以我可以将其输出到我的控制台并观察错误滚动,每小时通过电子邮件将日志发送给我或类似的东西。

您会为 django 站点推荐哪些日志记录解决方案,以满足这些简单的要求?我将应用程序作为fcgi服务器运行,并且使用 apache Web
服务器作为前端(尽管考虑使用 lighttpd)。


阅读 187

收藏
2022-07-31

共1个答案

小编典典

好吧,当 时DEBUG = False,Django
会自动将任何错误的完整追溯邮件发送给设置中列出的每个人ADMINS,这几乎可以免费获得通知。如果您想要更细粒度的控制,您可以编写一个中间件类并将其添加到您的设置中,该类定义了一个名为
的方法process_exception(),该方法可以访问引发的异常:

http://docs.djangoproject.com/en/dev/topics/http/middleware/#process-
exception

然后,您的process_exception()方法可以执行您想要的任何类型的日志记录:写入控制台、写入文件等。

编辑:虽然它不太有用,但您也可以监听got_request_exception信号,只要在请求处理期间遇到异常,就会发送该信号:

http://docs.djangoproject.com/en/dev/ref/signals/#got-request-
exception

但是,这不会 您访问异常对象,因此中间件方法更容易使用。

2022-07-31