2015-05-29 3 views
0

Я настроил свое приложение, чтобы он принимал запросы с моим полным доменным именем в заголовке Host: (используя ALLOWED_HOSTS). Однако наша бэкэнд-команда контролирует сайт с другим адресом (просто «ping» HTTP, чтобы проверить, живое ли приложение). Мне не нужно обслуживать какие-либо страницы на этом втором сайте, однако получение электронных писем о недостающей записи ALLOWED_HOSTS для данного конкретного случая немного раздражает (это происходит каждые пять минут).Игнорировать сообщения об отсутствии записи ALLOWED_HOSTS для одного имени хоста

Я нашел несколько статей, в которых обсуждается, как отключить такие уведомления сразу, но я хотел бы игнорировать это только для одного хоста. Есть ли решение для этого?

ответ

1

Вы можете решить эту проблему, добавив 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.

+0

Да, я понял это, я надеялся, что что-то пропустил в файле настроек, что-то вроде IGNORE_ALLOWED_HOST. Тогда я буду использовать этот подход! – GergelyPolonkai