diff options
| -rw-r--r-- | fietsboek/log.py | 9 | ||||
| -rw-r--r-- | fietsboek/views/admin.py | 7 |
2 files changed, 13 insertions, 3 deletions
diff --git a/fietsboek/log.py b/fietsboek/log.py index 5e48e85..e4d3ed9 100644 --- a/fietsboek/log.py +++ b/fietsboek/log.py @@ -1,11 +1,14 @@ """Logging-related utilities.""" + import collections -import datetime import logging from dataclasses import asdict, dataclass + @dataclass(slots=True) class LogLine: + """A rendered log line, as it is kept in memory.""" + time: str name: str level: int @@ -15,6 +18,7 @@ class LogLine: lineno: int def as_dict(self) -> dict: + """Returns the attributes of this log line as a dict.""" return asdict(self) @@ -26,7 +30,7 @@ class RingBuffer(logging.Handler): def __init__(self, maxlen): super().__init__() - self.buffer = collections.deque(maxlen=maxlen) + self.buffer: collections.deque = collections.deque(maxlen=maxlen) def emit(self, record): line = LogLine( @@ -45,4 +49,5 @@ HANDLER = RingBuffer(5000) def install(): + """Install the in-memory log handler to the root logger.""" logging.getLogger().addHandler(HANDLER) diff --git a/fietsboek/views/admin.py b/fietsboek/views/admin.py index 9252090..3385d3e 100644 --- a/fietsboek/views/admin.py +++ b/fietsboek/views/admin.py @@ -147,12 +147,17 @@ def admin(request: Request): "cron_good": cron_good, } + @view_config( route_name="admin-logs", renderer="fietsboek:templates/admin_logs.jinja2", permission="admin", ) -def admin_logs(request: Request): +def admin_logs(_request: Request): + """Renders the admin logs overview. + + :param request: The pyramid request. + """ return {"entries": log.HANDLER.buffer} |
