Вы можете решить эту проблему, добавив 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
.
Да, я понял это, я надеялся, что что-то пропустил в файле настроек, что-то вроде IGNORE_ALLOWED_HOST. Тогда я буду использовать этот подход! – GergelyPolonkai