Move error log handler to config object to be able to catch plugin load errors
This commit is contained in:
parent
49f8e0bc3a
commit
b9c65d75ef
3 changed files with 22 additions and 15 deletions
|
@ -7,6 +7,7 @@ import configparser
|
||||||
import logging
|
import logging
|
||||||
import logging.handlers
|
import logging.handlers
|
||||||
import stat
|
import stat
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
class Config(object):
|
class Config(object):
|
||||||
|
@ -647,9 +648,26 @@ class Config(object):
|
||||||
|
|
||||||
logging.getLogger('').name = "-" # Remove root prefix
|
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:
|
if console_logging:
|
||||||
self.initConsoleLogger()
|
self.initConsoleLogger()
|
||||||
if file_logging:
|
if file_logging:
|
||||||
self.initFileLogger()
|
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)
|
config = Config(sys.argv)
|
||||||
|
|
|
@ -14,17 +14,6 @@ from Debug import Debug
|
||||||
import importlib
|
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
|
# Skip websocket handler if not necessary
|
||||||
class UiWSGIHandler(WebSocketHandler):
|
class UiWSGIHandler(WebSocketHandler):
|
||||||
|
|
||||||
|
@ -93,10 +82,10 @@ class UiServer:
|
||||||
self.site_manager = SiteManager.site_manager
|
self.site_manager = SiteManager.site_manager
|
||||||
self.sites = SiteManager.site_manager.list()
|
self.sites = SiteManager.site_manager.list()
|
||||||
self.log = logging.getLogger(__name__)
|
self.log = logging.getLogger(__name__)
|
||||||
|
config.error_logger.onNewRecord = self.handleErrorLogRecord
|
||||||
|
|
||||||
self.logdb_errors = LogDb(ui_server=self)
|
def handleErrorLogRecord(self, record):
|
||||||
self.logdb_errors.setLevel(logging.getLevelName("ERROR"))
|
self.updateWebsocket(log_event=record.levelname)
|
||||||
logging.getLogger('').addHandler(self.logdb_errors)
|
|
||||||
|
|
||||||
# After WebUI started
|
# After WebUI started
|
||||||
def afterStarted(self):
|
def afterStarted(self):
|
||||||
|
|
|
@ -1123,7 +1123,7 @@ class UiWebsocket(object):
|
||||||
@flag.admin
|
@flag.admin
|
||||||
@flag.no_multiuser
|
@flag.no_multiuser
|
||||||
def actionServerErrors(self, to):
|
def actionServerErrors(self, to):
|
||||||
return self.server.logdb_errors.lines
|
return config.error_logger.lines
|
||||||
|
|
||||||
@flag.admin
|
@flag.admin
|
||||||
@flag.no_multiuser
|
@flag.no_multiuser
|
||||||
|
|
Loading…
Reference in a new issue