You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
916 B
30 lines
916 B
2 years ago
|
import logging.handlers
|
||
|
|
||
|
class TestHandler(logging.handlers.BufferingHandler):
|
||
|
def __init__(self, matcher):
|
||
|
# BufferingHandler takes a "capacity" argument
|
||
|
# so as to know when to flush. As we're overriding
|
||
|
# shouldFlush anyway, we can set a capacity of zero.
|
||
|
# You can call flush() manually to clear out the
|
||
|
# buffer.
|
||
|
logging.handlers.BufferingHandler.__init__(self, 0)
|
||
|
self.matcher = matcher
|
||
|
|
||
|
def shouldFlush(self):
|
||
|
return False
|
||
|
|
||
|
def emit(self, record):
|
||
|
self.format(record)
|
||
|
self.buffer.append(record.__dict__)
|
||
|
|
||
|
def matches(self, **kwargs):
|
||
|
"""
|
||
|
Look for a saved dict whose keys/values match the supplied arguments.
|
||
|
"""
|
||
|
result = False
|
||
|
for d in self.buffer:
|
||
|
if self.matcher.matches(d, **kwargs):
|
||
|
result = True
|
||
|
break
|
||
|
return result
|