美文网首页Python Web开发学习
Django使用Email跟踪代码错误

Django使用Email跟踪代码错误

作者: 吾星喵 | 来源:发表于2018-12-09 14:01 被阅读0次

    Django使用Email跟踪代码错误

    运行到服务器上后DEBUG=False,当访问出现异常时,通过邮件发送错误到设置的邮箱。

    发送错误

    当运行着公开的网页时,你应该把设置中的 DEBUG=False。 这将使服务器运行得更快,并且还可以防止恶意用户在错误页面中看到应用的详细信息。

    然而,把 DEBUG 设置为 False, 这意味着不会在你的网站上看到错误的细节,所有的人都只是看到公开的错误页面。当需要在部署的网页上追踪出现的错误,Django 可以通过设置去报告错误的细节。

    通过邮件方式报告

    Server errors

    当DEBUG为False时,Django将在代码引发未处理异常并导致内部服务器错误(HTTP状态代码500)时向ADMINS设置中列出的用户发送电子邮件。这将立即通知管理员任何错误。管理员将获得错误的描述、完整的Python回溯以及导致错误的HTTP请求的详细信息。

    ADMIN配置

    关于settings.py中的ADMIN,默认为: [] (空列表)

    获得代码错误通知的所有人的列表。当DEBUG=FalseAdminEmailHandler在日志中配置(默认情况下完成)时,Django将请求/响应周期中引发的异常的详细信息发送给这些人。

    列表中的每一项都应该是(全名、电子邮件地址)元组。例子:

    # 将请求/响应周期中引发的异常的详细信息发送邮箱配置
    ADMINS = [('admin', 'qq@qq.com'), ('another', 'email@xxx.com')]
    

    为了发送电子邮件,Django需要一些设置来告诉它如何连接到邮件服务器。至少,需要指定EMAIL_HOST,可能还需要指定EMAIL_HOST_USEREMAIL_HOST_PASSWORD,不过还需要根据邮件服务器的配置进行其他设置。有关电子邮件相关设置的完整列表,请参阅Django设置文档

    默认情况下,Django将从root@localhost发送电子邮件。然而,一些邮件提供商拒绝来自该地址的所有电子邮件。若要使用不同的发件人地址,请修改SERVER_EMAIL设置。

    要激活此行为,请将收件人的电子邮件地址放在ADMIN设置中。

    settings.py中的设置

    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    EMAIL_HOST = 'smtp.yeah.net'  # smtp地址
    EMAIL_HOST_USER = 'xxx@yeah.net'  # smtp 服务器的用户名
    EMAIL_HOST_PASSWORD = 'password'  # smtp服务器的密码
    # 管理员站点
    SERVER_EMAIL = 'xxx@yeah.net'
    # 将请求/响应周期中引发的异常的详细信息发送邮箱配置
    ADMINS = [('admin', 'qq@qq.com'), ]
    

    服务器错误电子邮件使用日志框架发送,因此可以通过自定义日志配置来自定义此行为。

    404 errors

    Django还可以配置为发送关于断开链接的错误邮件(404“page not found”错误)。

    Django在什么时候发送404错误的电子邮件

    • DEBUG = False
    • 您的中间件MIDDLEWARE s设置包括django.middleware.common.BrokenLinkEmailsMiddleware

    如果满足这些条件,Django将在代码出现404并请求有引用程序时向manager设置中列出的用户发送电子邮件。对于没有Referer(HTTP 请求header 的一部分)的404错误,它不需要发送电子邮件——那些通常只是访问了损坏的url或损坏的网络机器人。当引用程序等于请求的URL时,它也会忽略404,因为这种行为也是来自损坏的Web机器人。

    BrokenLinkEmailsMiddleware必须出现在拦截404错误的其他中间件之前,例如LocaleMiddlewareFlatpageFallbackMiddleware。将它放在中间件设置的顶部。

    您可以通过调整IGNORABLE_404_URLS设置来告诉Django停止报告特定的404s。它应该是已编译正则表达式对象的列表。例如:

    https://docs.djangoproject.com/zh-hans/2.1/howto/error-reporting/#errors

    相关文章

      网友评论

        本文标题:Django使用Email跟踪代码错误

        本文链接:https://www.haomeiwen.com/subject/qpohhqtx.html