Django在出现错误500时不会向管理员发送电子邮件
问题描述
我的Django项目中有以下设置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = 'somemail@gmail.com'
SERVER_EMAIL = 'somemail@gmail.com'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'somemail@gmail.com' #your acc and pass
EMAIL_HOST_PASSWORD = 'somepassword'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
ADMINS = (('myusername', 'myemail@gmail.com'),)
但Django仍然不会在500 error
上向管理员发送电子邮件。这里出了什么问题?docs中说我应该输入全名到ADMINS
设置。该全名是否来自默认User
型号?如果我把那些田地都清空了呢?更重要的是-没有验证字段应该是唯一的,并且可能存在与管理员同名的其他人?P.S.
send_mail()
中的python shell
使用这些设置。
更新我的
Logging
设置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'WARNING',
'class': 'logging.FileHandler',
'filename': os.path.join(BASE_DIR, 'debug.log'),
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'WARNING',
'propagate': True,
},
},
}
解决方案
在settings.py的日志记录设置中,将下面的块添加到处理程序
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
},
更新:
仅当DEBUG为FALSE时发送电子邮件时,才将以下行添加到上面的阻止中。
'filters': ['require_debug_false'],
和筛选器部分中的以下设置
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
更新:
在loggers
的handlers
中添加mail_admin
,如下
'loggers': {
'django': {
'handlers': ['file', 'mail_admins'],
'level': 'INFO',
'propagate': True,
},
},
相关文章