Added in-software logging, and increased logging verbosity.

This commit is contained in:
AccentuSoft
2021-12-27 20:37:41 +02:00
parent 37f187c044
commit b3cb0f0fea
4 changed files with 54 additions and 4 deletions

View File

@@ -1005,13 +1005,13 @@ class CanvasScene(QtWidgets.QGraphicsScene):
self.nodesDict[item.uid] = item
self.addItem(item)
item.setPos(QtCore.QPointF(x, y))
self.parent().mainWindow.MESSAGEHANDLER.info('Added node: ' + str(item.uid))
self.parent().mainWindow.MESSAGEHANDLER.info('Added node: ' + str(item.uid) + ' | ' + item.labelItem.text())
def addLinkToScene(self, link: Entity.BaseConnector) -> None:
self.linksDict[link.startItem().uid + link.endItem().uid] = link
self.addItem(link)
self.parent().mainWindow.MESSAGEHANDLER.info('Added link: (' + link.startItem().uid + ", " +
link.endItem().uid + ')')
link.endItem().uid + ') | ' + link.labelItem.text())
def appendSelectedItemsToGroupToggle(self) -> None:
if self.linking:
@@ -1164,6 +1164,7 @@ class CanvasScene(QtWidgets.QGraphicsScene):
self.addEntityLinkCreatorHelper(self.nodesDict[entity])
progress.setValue(steps)
self.parent().mainWindow.MESSAGEHANDLER.info('Loaded canvas ' + self.getSelfName())
def updatePositionInDB(self, uid, x, y) -> None:
"""
@@ -1444,6 +1445,8 @@ class CanvasScene(QtWidgets.QGraphicsScene):
item.iconItem.setPos(item.pos())
item.addToGroup(item.iconItem)
primaryField = pEditor.objectJson[list(pEditor.objectJson)[1]]
self.parent().messageHandler.info('Edited node: ' + pEditor.objectJson['uid'] + ' | ' + primaryField)
def editLinkProperties(self, linkUID: tuple) -> None:
"""
@@ -1460,6 +1463,8 @@ class CanvasScene(QtWidgets.QGraphicsScene):
if pEditor.exec_():
# Adding link with the same UID just overwrites properties.
self.parent().entityDB.addLink(pEditor.objectJson)
self.parent().messageHandler.info('Edited link: ' + str(pEditor.objectJson['uid']) + ' | ' +
pEditor.objectJson['Resolution'])
# Because the entities on each canvas are stored in dicts, and dicts are ordered, group nodes will always
# come after the nodes they contain.

View File

@@ -4,7 +4,9 @@ from PySide6 import QtWidgets, QtCore, QtCharts, QtGui
from Core.Interface import Stylesheets
from datetime import datetime
from getpass import getuser
from time import sleep
import networkx as nx
import queue
class DockBarThree(QtWidgets.QDockWidget):
@@ -16,12 +18,17 @@ class DockBarThree(QtWidgets.QDockWidget):
# self.setStyleSheet(Stylesheets.MAIN_WINDOW_STYLESHEET)
childWidget = QtWidgets.QWidget()
childWidget.setLayout(QtWidgets.QVBoxLayout())
childWidget.setContentsMargins(0, 0, 0, 0)
self.setWidget(childWidget)
childWidget2 = QtWidgets.QWidget()
childWidget2.setContentsMargins(0, 0, 0, 0)
childWidget2.setLayout(QtWidgets.QHBoxLayout())
childWidget.layout().addWidget(childWidget2)
childWidget2.layout().addWidget(self.timeWidget)
childWidget2.layout().addWidget(self.tabPane)
self.tabPane.setContentsMargins(0, 0, 0, 0)
self.tabPane.addTab(self.logViewer, 'Program Log')
self.tabPane.addTab(self.timeWidget, 'Timeline')
childWidget2.layout().addWidget(self.chatBox)
self.serverStatus.setStyleSheet(Stylesheets.DOCK_BAR_LABEL)
childWidget.layout().addWidget(self.serverStatus)
@@ -38,12 +45,22 @@ class DockBarThree(QtWidgets.QDockWidget):
self.setMaximumHeight(275)
self.setMinimumHeight(275)
self.tabPane = QtWidgets.QTabWidget()
self.serverStatus = ServerStatusBox(self)
self.chatBox = ChatBox(self, self.parent())
self.timeWidget = TimeWidget(self, self.parent())
self.logViewer = QtWidgets.QPlainTextEdit()
logViewerUpdateThread = LoggingUpdateThread(mainWindow.MESSAGEHANDLER)
logViewerUpdateThread.loggingSignal.connect(self.updateLogs)
logViewerUpdateThread.start()
self.logViewer.setReadOnly(True)
self.initialiseLayout()
def updateLogs(self, newLogMessage: str):
self.logViewer.appendPlainText(newLogMessage)
class TimeWidget(QtWidgets.QWidget):
@@ -236,7 +253,7 @@ class TimeWidget(QtWidgets.QWidget):
yAxis = QtCharts.QValueAxis()
yAxis.applyNiceNumbers()
yAxis.setTickCount(min(maxEntityNum + 1, 5))
yAxis.setTickCount(min(maxEntityNum + 1, 4))
xAxis = QtCharts.QBarCategoryAxis()
xAxis.append(xAxisValues)
@@ -502,3 +519,22 @@ class ChatBox(QtWidgets.QWidget):
self.mainWindow.sendChatMessage(self.chatName + self.textSendBox.text())
self.receiveMessage(self.chatName + self.textSendBox.text())
self.textSendBox.setText("")
class LoggingUpdateThread(QtCore.QThread):
loggingSignal = QtCore.Signal(str)
def __init__(self, messageHandler):
super().__init__()
self.messageHandler = messageHandler
def run(self):
while True:
if not self.messageHandler.logQueue.empty():
try:
logMsg = self.messageHandler.logQueue.get().getMessage()
self.loggingSignal.emit(logMsg)
except queue.Empty:
pass
else:
sleep(0.25)

View File

@@ -1,7 +1,9 @@
#!/usr/bin/env python3
import logging
from logging import handlers
from multiprocessing import Queue
from pathlib import Path
from PySide6 import QtWidgets
@@ -82,16 +84,21 @@ class MessageHandler:
def __init__(self, parentObject):
self.mainWindow = parentObject
self.logQueue = Queue()
self.logFileHandler = logging.FileHandler(
self.mainWindow.SETTINGS.value("Logging/Logfile", str(Path.home() / 'LinkScope_logfile.log')), 'a')
self.logQueueHandler = handlers.QueueHandler(self.logQueue)
self.logFormatter = logging.Formatter(
'{' + self.mainWindow.SETTINGS.value("Project/Name", "Untitled") + '} [%(asctime)s] - %(levelname)s: %('
'message)s')
self.logFormatterQueue = logging.Formatter('[%(asctime)s] - %(levelname)s: %(message)s')
self.logFileHandler.setFormatter(self.logFormatter)
self.logQueueHandler.setFormatter(self.logFormatterQueue)
rootLogger = logging.getLogger()
for handler in rootLogger.handlers[:]:
if isinstance(handler, logging.FileHandler):
rootLogger.removeHandler(handler)
rootLogger.addHandler(self.logFileHandler)
rootLogger.addHandler(self.logQueueHandler)
self.setSeverityLevel(self.mainWindow.SETTINGS.value("Logging/Severity", logging.INFO))

View File

@@ -904,6 +904,7 @@ class MainWindow(QtWidgets.QMainWindow):
resolutionThread = ResolutionExecutorThread(
resolution, resArgument, resolutionParameterValues, self, resolutionUID)
resolutionThread.sig.connect(self.resolutionSignalListener)
self.MESSAGEHANDLER.info('Running Resolution: ' + resolution)
resolutionThread.start()
self.resolutions.append((resolutionThread, category == 'Server Resolutions'))
@@ -1381,6 +1382,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.centralWidget().tabbedPane.createHomeTab()
self.setStatus("Ready")
self.MESSAGEHANDLER.info('Project opened, ready to work.')
def __init__(self):
super(MainWindow, self).__init__()