Move error log handler to config object to be able to catch plugin load errors

This commit is contained in:
Tamas Kocsis 2020-09-09 18:29:24 +02:00
parent 49f8e0bc3a
commit b9c65d75ef
3 changed files with 22 additions and 15 deletions

View File

@ -7,6 +7,7 @@ import configparser
import logging
import logging.handlers
import stat
import time
class Config(object):
@ -647,9 +648,26 @@ class Config(object):
logging.getLogger('').name = "-" # Remove root prefix
self.error_logger = ErrorLogHandler()
self.error_logger.setLevel(logging.getLevelName("ERROR"))
logging.getLogger('').addHandler(self.error_logger)
if console_logging:
self.initConsoleLogger()
if file_logging:
self.initFileLogger()
class ErrorLogHandler(logging.StreamHandler):
def __init__(self):
self.lines = []
return super().__init__()
def emit(self, record):
self.lines.append([time.time(), record.levelname, self.format(record)])
def onNewRecord(self, record):
pass
config = Config(sys.argv)

View File

@ -14,17 +14,6 @@ from Debug import Debug
import importlib
class LogDb(logging.StreamHandler):
def __init__(self, ui_server):
self.lines = []
self.ui_server = ui_server
return super(LogDb, self).__init__()
def emit(self, record):
self.ui_server.updateWebsocket(log_event=record.levelname)
self.lines.append([time.time(), record.levelname, self.format(record)])
# Skip websocket handler if not necessary
class UiWSGIHandler(WebSocketHandler):
@ -93,10 +82,10 @@ class UiServer:
self.site_manager = SiteManager.site_manager
self.sites = SiteManager.site_manager.list()
self.log = logging.getLogger(__name__)
config.error_logger.onNewRecord = self.handleErrorLogRecord
self.logdb_errors = LogDb(ui_server=self)
self.logdb_errors.setLevel(logging.getLevelName("ERROR"))
logging.getLogger('').addHandler(self.logdb_errors)
def handleErrorLogRecord(self, record):
self.updateWebsocket(log_event=record.levelname)
# After WebUI started
def afterStarted(self):

View File

@ -1123,7 +1123,7 @@ class UiWebsocket(object):
@flag.admin
@flag.no_multiuser
def actionServerErrors(self, to):
return self.server.logdb_errors.lines
return config.error_logger.lines
@flag.admin
@flag.no_multiuser