当前位置: 首页 > 面试题库 >

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

屠杰
2023-03-14
问题内容

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

但是在某种生产站点上,我更愿意使用DEBUG=False并向访问者展示一些标准错误500页,其中包含我目前正在修复此bug的信息;)
同时,我想以某种方式记录所有错误这些信息(堆栈跟踪和请求信息)存储到服务器上的文件中-因此我可以将其输出到控制台并观看错误滚动,每小时将日志发送给我或类似的东西。

你会为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

但是,这不能让你访问异常对象,因此中间件方法更易于使用。



 类似资料:
  • 问题内容: 我设置了 詹金斯 , PM2 在 AWS Ubuntu的 服务器。我有一个网站, 一个 是内置的 詹金斯 。该 詹金斯 然后将启动该网站 PM2 在配置的外壳。但是,只有我通过手动登录 ubuntu 服务器来启动网站并运行才能使网站运行。 这个问题似乎 PM2 由用户启动 詹金斯 将 不会 被外界看到。只有由用户 ubuntu 启动(通过ssh ubuntu @ myubuntuser

  • 当我调用服务在日志文件中获取此信息消息时,它工作正常,但将此消息写入日志文件: php.INFO:User Deprecated:The“logger”服务是私有的,从容器中获取它是不推荐的,因为Symfony 3.2,并且将在4.0中失败。您应该公开服务,或者停止直接使用容器,改用依赖项注入。{“异常”:“[object](ErrorException(代码:0):用户已弃用:记录器\”\“服务

  • 问题内容: 我一直在使用亚马逊的产品广告API来生成包含给定书籍价格的网址。我生成的一个网址如下: http://www.amazon.com/gp/offer- listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26crea

  • 问题内容: 好的,现在我真的负担不起任何服务的费用。我希望能够使用租用的服务器(基于Linux)拍摄屏幕截图,并将其输出到屏幕上。 我知道有很多服务可以执行此操作,但是它们通常都有限制或水印,或者您必须等待从队列中获取屏幕截图。 有什么办法可以自己截取屏幕截图,然后稍后再缓存它们或其他内容吗?我使用的是PHP,但不仅限于此。我只是在Linux服务器上,所以GD的适当功能无法正常工作。帮帮我!:)