Django 有个在DEBUG=False时,服务500错误时自动发送警报邮件功能 之前用过一阵这个功能,但是发现好像不能控制发送频率,遂换成独立的监控服务了。
记录一下用法,
配置ADMINS,收件人,元组形式。
然后下面是163的配置示例,注意EMAIL_HOST_PASSWORD不是邮箱密码,是单独设置的授权密码管理:
ADMINS = [
('name', 'xxx@163.com'),
]
SERVER_EMAIL ='xxx@163.com'
DEFAULT_FROM_EMAIL ='xxx@163.com'
EMAIL_HOST ='smtp.163.com'
EMAIL_PORT = 25
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST_USER ='xxs@163.com'
EMAIL_HOST_PASSWORD ='xxx'
再来一个gmail的设置,前提是服务器能连外网。
SERVER_EMAIL ='xxx@gmail.com'
DEFAULT_FROM_EMAIL ='xxx@gmail.com'
EMAIL_HOST ='smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST_USER ='xxx@gmail.com'
EMAIL_HOST_PASSWORD ='xxx'
EMAIL_USE_TLS = True
有些教程上还写了一些要配置日志的地方,其实如果没有配置LOGGING的话,Django默认的DEFAULT_LOGGING就行了。
自带的django logger的handler包括了mail_admins这个handler
贴一下Django的默认日志配置:
DEFAULT_LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'formatters': {
'django.server': {
'()': 'django.utils.log.ServerFormatter',
'format': '[%(server_time)s] %(message)s',
}
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'django.server': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'django.server',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django': {
'handlers': ['console', 'mail_admins'],
'level': 'INFO',
},
'django.server': {
'handlers': ['django.server'],
'level': 'INFO',
'propagate': False,
},
}
}