Allow to filter out log messages by templates

Fixes #1594.
This commit is contained in:
Alexander Turenko 2016-09-12 03:01:22 +03:00
commit 1b1d1fd9f7
2 changed files with 21 additions and 4 deletions

View file

@ -92,6 +92,7 @@ class LimitFilter(logging.Filter):
"""
_ignore = set()
_raised_messages = set()
_threshold = 5
_group_count = defaultdict(int)
@ -105,12 +106,18 @@ class LimitFilter(logging.Filter):
group_args = record.__dict__.get('limit_args', ())
# ignore record if it was already raised
# use .getMessage() and not .msg for string formatting
ignore_key = (record.levelno, record.getMessage())
if ignore_key in self._ignore:
message_key = (record.levelno, record.getMessage())
if message_key in self._raised_messages:
return False
else:
self._ignore.add(ignore_key)
self._raised_messages.add(message_key)
# ignore LOG_FILTER records
# use .msg and not .getMessage() for string formatting to allow
# filtering by templates
ignore_key = (record.levelno, record.msg)
if ignore_key in self._ignore:
return False
# check if we went over threshold
if group: