From 089c35f89e4dec36e30bf4ca52aad27db780e0a1 Mon Sep 17 00:00:00 2001 From: Stefan Allius Date: Sun, 4 May 2025 15:28:28 +0200 Subject: [PATCH] create LogHandler for the dashborad - simple memory log handler which stores the last 64 warnings/errors for the dashboard --- app/src/web/log_handler.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 app/src/web/log_handler.py diff --git a/app/src/web/log_handler.py b/app/src/web/log_handler.py new file mode 100644 index 0000000..7565649 --- /dev/null +++ b/app/src/web/log_handler.py @@ -0,0 +1,24 @@ +from logging import Handler +from logging import LogRecord +import logging +from collections import deque + +from singleton import Singleton + + +class LogHandler(Handler, metaclass=Singleton): + def __init__(self, capacity=64): + super().__init__(logging.WARNING) + self.capacity = capacity + self.buffer = deque(maxlen=capacity) + + def emit(self, record: LogRecord): + self.buffer.append({ + 'ctime': record.created, + 'level': record.levelno, + 'lname': record.levelname, + 'msg': record.getMessage() + }) + + def get_buffer(self, elms=0) -> list: + return list(self.buffer)[-elms:]