你如何在 django 站点上记录服务器错误 [英] How do you log server errors on django sites

查看:43
本文介绍了你如何在 django 站点上记录服务器错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

So, when playing with the development I can just set settings.DEBUG to True and if an error occures I can see it nicely formatted, with good stack trace and request information.

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

But on kind of production site I'd rather use DEBUG=False and show visitors some standard error 500 page with information that I'm working on fixing this bug at this moment ;)
At the same time I'd like to have some way of logging all those information (stack trace and request info) to a file on my server - so I can just output it to my console and watch errors scroll, email the log to me every hour or something like this.

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

What logging solutions would you recomend for a django-site, that would meet those simple requirements? I have the application running as fcgi server and I'm using apache web server as frontend (although thinking of going to lighttpd).

推荐答案

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

Well, when DEBUG = False, Django will automatically mail a full traceback of any error to each person listed in the ADMINS setting, which gets you notifications pretty much for free. If you'd like more fine-grained control, you can write and add to your settings a middleware class which defines a method named process_exception(), which will have access to the exception that was raised:

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

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

Your process_exception() method can then perform whatever type of logging you'd like: writing to console, writing to a file, etc., etc.

虽然它不太有用,但您也可以监听 got_request_exception 信号,该信号将在请求处理过程中遇到异常时发送:

though it's a bit less useful, you can also listen for the got_request_exception signal, which will be sent whenever an exception is encountered during request processing:

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

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

This does not give you access to the exception object, however, so the middleware method is much easier to work with.

这篇关于你如何在 django 站点上记录服务器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆