From 8d8075027e157ea62034c362bdb177f918c4482d Mon Sep 17 00:00:00 2001 From: joamag Date: Thu, 5 Mar 2020 16:27:40 +0000 Subject: [PATCH] New clear and flush to file support in memory logger --- src/quorum/log.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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