Source code for qrainbowstyle.extras.debugging

import logging
import traceback

from qtpy.QtCore import QtInfoMsg, QtFatalMsg, QtCriticalMsg, QtWarningMsg


[docs]class OutputLogger: def __init__(self): super(OutputLogger, self).__init__() self.logger = logging.getLogger() self.logger.setLevel(logging.NOTSET) self.handler = logging.StreamHandler() self.handler.setLevel(logging.NOTSET) try: import coloredlogs self.formatter = coloredlogs.ColoredFormatter("%(asctime)s " "[%(threadName)s] " "[%(name)s] " "[%(levelname)s] " "%(message)s") except ImportError: self.formatter = logging.Formatter("%(asctime)s " "[%(threadName)s] " "[%(name)s] " "[%(levelname)s] " "%(message)s") self.handler.setFormatter(self.formatter) self.logger.addHandler(self.handler) self.logger.info("Logger enabled")
[docs] def set_level(self, level): if self.logger and self.handler: self.logger.setLevel(level) self.handler.setLevel(level) else: raise Exception("Logger not enabled!")
[docs]def qt_message_handler(mode, context, message): """Logger for Qt errors""" logger = logging.getLogger("QtLogger") if mode == QtInfoMsg: mode = 20 elif mode == QtWarningMsg: mode = 30 elif mode == QtCriticalMsg: mode = 40 elif mode == QtFatalMsg: mode = 50 else: mode = 20 logger.log(mode, "(%s: %s): %s" % (context.file, context.line, message))
[docs]def catch_exceptions(t, val, tb): """Replaces sys.excepthook to catch and log warnings and errors""" trace = "".join(traceback.format_exception(t, val, tb)) logging.getLogger().error(trace)