我已经配置了我的应用程序,因此它接受Host:
标头中使用我的FQDN的请求(使用ALLOWED_HOSTS
)。但是,我们的后端团队使用不同的地址监控站点(只是HTTP“ping”以检查应用程序是否处于活动状态)。我不需要在第二个站点上提供任何页面,但是,收到关于此特定案例的缺少ALLOWED_HOSTS
条目的电子邮件有点烦人(它每五分钟一次)。
我找到了几篇讨论如何一次性禁用此类通知的文章,但我想忽略这一点只针对这一个主机。有解决方案吗?
答案 0 :(得分:2)
您可以通过向filter
添加mail_admins
并使特定django.security.DisallowedHost
日志记录静音来解决此问题。 Docs.
当收到无效的主机时,会引发django.core.exceptions.SuspiciousOperation
,由django.security.DisallowedHost
记录器记录,并由mail_admins
记录处理程序默认处理。
通过向django.utils.log.CallbackFilter
处理程序添加mail_admins
过滤器,您可以沉默所需的日志记录。在这种情况下,静默mail_admins
处理程序将避免发送电子邮件。
示例LOGGING
设置如下所示(我只会添加相关位,您的设置可能会有更多条目):
def skip_missing_host(record):
if record.name == 'django.security.DisallowedHost':
# `record.msg` contents are similar to:
# u"Invalid HTTP_HOST header: 'somehost'.
# You may need to add u'somehost' to ALLOWED_HOSTS."
# Add condition to determine when the ERROR should be logged:
if "u'somehost'" in record.msg:
# Returning False indicates that the record shouldn't be handled:
return False
return True
LOGGING = {
'filters': {
'skip_missing_host': {
'()': 'django.utils.log.CallbackFilter',
'callback': skip_missing_host,
},
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false', 'skip_missing_host'],
'class': 'django.utils.log.AdminEmailHandler'
},
},
}
或者,您可以创建自己的django.security.DisallowedHost
处理程序,该处理程序需要在LOGGING
设置中进行配置。