diff --git a/src/quorum/log.py b/src/quorum/log.py index 9c80de32..38f8772b 100644 --- a/src/quorum/log.py +++ b/src/quorum/log.py @@ -190,6 +190,10 @@ def emit(self, record): messages_s = len(_messages_l) if messages_s > self.max_length: _messages_l.pop() + def clear(self): + self.messages = collections.deque() + self.messages_l = dict() + def get_latest(self, count = None, level = None): count = count or 100 is_level = level and not legacy.is_string(level) @@ -200,6 +204,17 @@ def get_latest(self, count = None, level = None): slice = itertools.islice(messages, 0, count) return list(slice) + def flush_to_file(self, path, count = None, level = None, clear = True): + messages = self.get_latest(level = level, count = count or 65536) + if not messages: return + file = open(path, "wb") + try: + for message in messages: + file.write(message + "\n") + finally: + file.close() + if clear: self.clear() + class BaseFormatter(logging.Formatter): """ The base Quorum logging formatted used to add some extra