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 | |