From 3f34458f976e35686a4c9afa700582a76ab8724d Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 26 Nov 2020 20:57:42 +0100 Subject: [PATCH] misc: log DisallowedHost as warnings (#42824) --- debian/debian_config_common.py | 15 ++++++++++----- hobo/logger.py | 13 +++++++++++++ tests_multitenant/test_logger.py | 9 ++++++++- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/debian/debian_config_common.py b/debian/debian_config_common.py index 3f3cdbd..ad3624b 100644 --- a/debian/debian_config_common.py +++ b/debian/debian_config_common.py @@ -71,6 +71,10 @@ LOGGING = { 'debug_log': { '()': 'hobo.logger.DebugLogFilter', }, + 'clamp_to_warning': { + '()': 'hobo.logger.ClampLogLevel', + 'level': 'WARNING', + } }, 'formatters': { 'syslog': { @@ -146,13 +150,14 @@ LOGGING = { 'level': 'NOTSET', 'propagate': True, }, - 'django.core.exceptions.SuspiciousFileOperation': { - 'handlers': ['null'], - 'propagate': False, + 'django.security.SuspiciousFileOperation': { + 'filters': ['clamp_to_warning'], }, 'django.security.DisallowedRedirect': { - 'handlers': ['null'], - 'propagate': False, + 'filters': ['clamp_to_warning'], + }, + 'django.core.exceptions.DisallowedHost': { + 'filters': ['clamp_to_warning'], }, 'django.template': { # too much logs on DEBUG level diff --git a/hobo/logger.py b/hobo/logger.py index ba4edcd..7799434 100644 --- a/hobo/logger.py +++ b/hobo/logger.py @@ -217,3 +217,16 @@ class DebugLog(object): return for record in cls(debug_log_path)._parse(cursor=cursor): yield record + + +class ClampLogLevel(logging.Filter): + def __init__(self, level): + self.levelname = level.upper() + self.levelno = getattr(logging, self.levelname) + super(ClampLogLevel, self).__init__() + + def filter(self, record): + if record.levelno > self.levelno: + record.levelno = self.levelno + record.levelname = self.levelname + return super(ClampLogLevel, self).filter(record) diff --git a/tests_multitenant/test_logger.py b/tests_multitenant/test_logger.py index 39f46c5..b4f35cb 100644 --- a/tests_multitenant/test_logger.py +++ b/tests_multitenant/test_logger.py @@ -24,7 +24,7 @@ import pytest from tenant_schemas.utils import tenant_context -from hobo.logger import DebugLog +from hobo.logger import DebugLog, ClampLogLevel @pytest.fixture @@ -105,3 +105,10 @@ def test_debug_log(tenants, settings, app, rf, debug_log, freezer): lines2 = list(DebugLog.lines(cursor=lines[0]['cursor'])) assert len(lines2) == 1 assert lines[1] == lines2[0] + + +def test_clamp_log_level(caplog): + logger = logging.getLogger('django.security.SuspiciousFileOperation') + logger.addFilter(ClampLogLevel(level='WARNING')) + logger.error('test') + assert caplog.records[-1].levelname == 'WARNING' -- 2.29.2