Projet

Général

Profil

0001-misc-log-DisallowedHost-as-warnings-42824.patch

Benjamin Dauvergne, 26 novembre 2020 20:58

Télécharger (3,09 ko)

Voir les différences:

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(-)
debian/debian_config_common.py
71 71
        'debug_log': {
72 72
            '()': 'hobo.logger.DebugLogFilter',
73 73
        },
74
        'clamp_to_warning': {
75
            '()': 'hobo.logger.ClampLogLevel',
76
            'level': 'WARNING',
77
        }
74 78
    },
75 79
    'formatters': {
76 80
        'syslog': {
......
146 150
            'level': 'NOTSET',
147 151
            'propagate': True,
148 152
        },
149
        'django.core.exceptions.SuspiciousFileOperation': {
150
            'handlers': ['null'],
151
            'propagate': False,
153
        'django.security.SuspiciousFileOperation': {
154
            'filters': ['clamp_to_warning'],
152 155
        },
153 156
        'django.security.DisallowedRedirect': {
154
            'handlers': ['null'],
155
            'propagate': False,
157
            'filters': ['clamp_to_warning'],
158
        },
159
        'django.core.exceptions.DisallowedHost': {
160
            'filters': ['clamp_to_warning'],
156 161
        },
157 162
        'django.template': {
158 163
            # too much logs on DEBUG level
hobo/logger.py
217 217
            return
218 218
        for record in cls(debug_log_path)._parse(cursor=cursor):
219 219
            yield record
220

  
221

  
222
class ClampLogLevel(logging.Filter):
223
    def __init__(self, level):
224
        self.levelname = level.upper()
225
        self.levelno = getattr(logging, self.levelname)
226
        super().__init__()
227

  
228
    def filter(self, record):
229
        if record.levelno > self.levelno:
230
            record.levelno = self.levelno
231
            record.levelname = self.levelname
232
        return super(ClampLogLevel, self).filter(record)
tests_multitenant/test_logger.py
24 24

  
25 25
from tenant_schemas.utils import tenant_context
26 26

  
27
from hobo.logger import DebugLog
27
from hobo.logger import DebugLog, ClampLogLevel
28 28

  
29 29

  
30 30
@pytest.fixture
......
105 105
    lines2 = list(DebugLog.lines(cursor=lines[0]['cursor']))
106 106
    assert len(lines2) == 1
107 107
    assert lines[1] == lines2[0]
108

  
109

  
110
def test_clamp_log_level(caplog):
111
    logger = logging.getLogger('django.security.SuspiciousFileOperation')
112
    logger.addFilter(ClampLogLevel(level='WARNING'))
113
    logger.error('test')
114
    assert caplog.records[-1].levelname == 'WARNING'
108
-