aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/addons/eventstore.py11
-rw-r--r--mitmproxy/tools/console/eventlog.py4
2 files changed, 11 insertions, 4 deletions
diff --git a/mitmproxy/addons/eventstore.py b/mitmproxy/addons/eventstore.py
index ff8429d7..415bd017 100644
--- a/mitmproxy/addons/eventstore.py
+++ b/mitmproxy/addons/eventstore.py
@@ -5,6 +5,8 @@ import blinker
from mitmproxy import command
from mitmproxy.log import LogEntry
+EVENTLOG_SIZE = 10000
+
class EventStore:
def __init__(self):
@@ -15,6 +17,15 @@ class EventStore:
def log(self, entry: LogEntry) -> None:
self.data.append(entry)
self.sig_add.send(self, entry=entry)
+ # Instead of removing one log row for every row > EVENTLOG_SIZE we add,
+ # we accept an overhead of 10% and only purge then to simplify the API.
+ if len(self.data) / EVENTLOG_SIZE >= 1.1:
+ self.purge()
+
+ def purge(self):
+ """Purge event store size to EVENTLOG_SIZE"""
+ self.data = self.data[len(self.data) - EVENTLOG_SIZE:]
+ self.sig_refresh.send(self)
@command.command("eventstore.clear")
def clear(self) -> None:
diff --git a/mitmproxy/tools/console/eventlog.py b/mitmproxy/tools/console/eventlog.py
index 3fc34fa2..49e10dbc 100644
--- a/mitmproxy/tools/console/eventlog.py
+++ b/mitmproxy/tools/console/eventlog.py
@@ -2,8 +2,6 @@ import urwid
from mitmproxy.tools.console import layoutwidget
from mitmproxy import log
-EVENTLOG_SIZE = 10000
-
class LogBufferWalker(urwid.SimpleListWalker):
pass
@@ -47,8 +45,6 @@ class EventLog(urwid.ListBox, layoutwidget.LayoutWidget):
else:
e = urwid.Text(txt)
self.walker.append(e)
- if len(self.walker) > EVENTLOG_SIZE:
- self.walker.pop(0)
if self.master.options.console_focus_follow:
self.walker.set_focus(len(self.walker) - 1)