Django使用Email跟踪代码错误
Django使用Email跟踪代码错误
运行到服务器上后DEBUG=False
,当访问出现异常时,通过邮件发送错误到设置的邮箱。
发送错误
当运行着公开的网页时,你应该把设置中的 DEBUG=False
。 这将使服务器运行得更快,并且还可以防止恶意用户在错误页面中看到应用的详细信息。
然而,把 DEBUG 设置为 False, 这意味着不会在你的网站上看到错误的细节,所有的人都只是看到公开的错误页面。当需要在部署的网页上追踪出现的错误,Django 可以通过设置去报告错误的细节。
通过邮件方式报告
Server errors
当DEBUG为False时,Django将在代码引发未处理异常并导致内部服务器错误(HTTP状态代码500)时向ADMINS设置中列出的用户发送电子邮件。这将立即通知管理员任何错误。管理员将获得错误的描述、完整的Python回溯以及导致错误的HTTP请求的详细信息。
ADMIN配置
关于settings.py中的ADMIN,默认为: []
(空列表)
获得代码错误通知的所有人的列表。当DEBUG=False
和AdminEmailHandler
在日志中配置(默认情况下完成)时,Django将请求/响应周期中引发的异常的详细信息发送给这些人。
列表中的每一项都应该是(全名、电子邮件地址)元组。例子:
# 将请求/响应周期中引发的异常的详细信息发送邮箱配置
ADMINS = [('admin', 'qq@qq.com'), ('another', 'email@xxx.com')]
为了发送电子邮件,Django需要一些设置来告诉它如何连接到邮件服务器。至少,需要指定
EMAIL_HOST
,可能还需要指定EMAIL_HOST_USER
和EMAIL_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错误的其他中间件之前,例如LocaleMiddleware
或FlatpageFallbackMiddleware
。将它放在中间件设置的顶部。
您可以通过调整IGNORABLE_404_URLS
设置来告诉Django停止报告特定的404s。它应该是已编译正则表达式对象的列表。例如:
https://docs.djangoproject.com/zh-hans/2.1/howto/error-reporting/#errors