* add Dashboards log handler to all known loggers * add list of last 3 warnings/errors to page * add note list to page * create LogHandler for the dashboard - simple memory log handler which stores the last 64 warnings/errors for the dashboard * render warnings/errors as note list * add page for warnings and errors * fix double defined build target * add well done message if no errors in the logs * translate page titles * more translations * add Notes page and table for important messages * add unit tests
25 lines
659 B
Python
25 lines
659 B
Python
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:]
|