Source code for brace.example.zaber.zaberMain

import atexit
from datetime import datetime
import logging
import os
import sys
from PySide6.QtWidgets import QApplication
from brace.UI.LoggingHelpers import TextBrowserHandler
from brace.example.zaber.MainWindow import ZaberMainWindow

# Handles uncaught exceptions.
[docs] def handleException(excType, excValue, excTraceback): if issubclass(excType, KeyboardInterrupt): sys.__excepthook__(excType, excValue, excTraceback) return logger.error("Uncaught exception", exc_info = (excType, excValue, excTraceback))
[docs] def main(): logger.setLevel(logging.DEBUG) # Logger debug has to be set to the "lowest" level formatter = logging.Formatter(fmt = '%(asctime)s.%(msecs)03d %(levelname)s: %(message)s', datefmt = '%Y-%m-%d %H:%M:%S') # Log handler for the text browser textBrowserHandler = TextBrowserHandler() textBrowserHandler.setLevel(logging.INFO) textBrowserHandler.setFormatter(formatter) logger.addHandler(textBrowserHandler) # Log handler for the standard output. streamHandler = logging.StreamHandler(sys.stdout) streamHandler.setLevel(logging.DEBUG) streamHandler.setFormatter(formatter) logger.addHandler(streamHandler) fileFormatter = logging.Formatter(fmt = '%(asctime)s.%(msecs)03d %(levelname)s, [%(pathname)s, %(filename)s, %(module)s, %(funcName)s, %(lineno)d]: %(message)s', datefmt = '%Y-%m-%d %H:%M:%S') dirPath = os.path.dirname(os.path.realpath(__file__)) logsPath = os.path.join(dirPath, 'logs') os.makedirs(logsPath, exist_ok = True) logFileName = os.path.join(logsPath, datetime.now().strftime('%Y%m%d_%H%M%S_GUI.log')) fileHandler = logging.FileHandler(logFileName) fileHandler.setLevel(logging.DEBUG) fileHandler.setFormatter(fileFormatter) logger.addHandler(fileHandler) sys.excepthook = handleException atexit.register(lambda: logger.debug(f"Session ended at {datetime.now().strftime("%Y/%m/%d %H:%M:%S.%f")}")) app = QApplication(sys.argv) mainWindow = ZaberMainWindow(app, textBrowserHandler) mainWindow.showMaximized() mainWindow.show() sys.exit(app.exec())
if __name__ == '__main__': logger = logging.getLogger('logger') main()