2015-05-29 143 views
0

我配置了我的应用程序,因此它接受Host:标题中使用我的FQDN的请求(使用ALLOWED_HOSTS)。但是,我们的后端团队使用不同的地址监视站点(只需HTTP“ping”来检查应用程序是否存在)。我不需要在第二个网站上提供任何网页,但是,收到关于这个特定案例的缺失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

相关问题