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

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

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

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

最佳答案

好吧,当 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

让您可以访问异常对象,但是,中间件方法更容易使用。

https://stackoverflow.com/questions/238081/

相关文章:

python - 如何使用 python smtplib 向多个收件人发送电子邮件?

linux - 递归列出目录中的所有文件,包括符号链接(symbolic link)目录中的文件

linux - 如何通过脚本创建 crontab

linux - 如何计算目录的 MD5 校验和?

linux - 如何在 Linux 中永久导出变量?

python - 在 Pandas 中附加到一个空的 DataFrame?

python - pip 相当于 `npm install package --save-dev`

python - 如何实现有序的默认字典?

linux - 如何使用 sed 删除文件的最后 n 行

python - 如何在单个图中为不同的图获得不同的颜色线