예제 #1
0
 def __init__(self, verbose, *arg, **kw):
     super(LoggerWindow, self).__init__(*arg, **kw)
     QtWidgets.QApplication.instance().aboutToQuit.connect(self.shutdown)
     self.setWindowTitle(self.tr("Photini error logging"))
     self.setLayout(QtWidgets.QGridLayout())
     self.layout().setRowStretch(0, 1)
     self.layout().setColumnStretch(0, 1)
     # main dialog area
     self.text = QtWidgets.QTextEdit()
     self.text.setReadOnly(True)
     self.text.setMinimumWidth(self.text.fontMetrics().width('x' * 70))
     self.layout().addWidget(self.text, 0, 0, 1, 3)
     # save button
     save_button = QtWidgets.QPushButton(self.tr('Save'))
     save_button.clicked.connect(self.save)
     self.layout().addWidget(save_button, 1, 1)
     # dismiss button
     dismiss_button = QtWidgets.QPushButton(self.tr('Dismiss'))
     dismiss_button.clicked.connect(self.hide)
     self.layout().addWidget(dismiss_button, 1, 2)
     # Python logger
     self.logger = logging.getLogger('')
     for handler in list(self.logger.handlers):
         self.logger.removeHandler(handler)
     self.logger.setLevel(max(logging.ERROR - (verbose * 10), 1))
     self.stream_proxy = StreamProxy(self)
     self.stream_proxy.write_text.connect(self.write)
     self.stream_proxy.flush_text.connect(self.flush)
     handler = logging.StreamHandler(self.stream_proxy)
     handler.setFormatter(
         logging.Formatter(
             '%(asctime)s: %(levelname)s: %(name)s: %(message)s',
             datefmt='%H:%M:%S'))
     if verbose > 0:
         handler.addFilter(LoggerFilter(verbose))
     self.logger.addHandler(handler)
     # intercept stdout and stderr, if they exist
     if sys.stderr:
         sys.stderr = OutputInterceptor('stderr', sys.stderr)
     if sys.stdout:
         sys.stdout = OutputInterceptor('stdout', sys.stdout)
예제 #2
0
 def __init__(self, verbose, *arg, **kw):
     super(LoggerWindow, self).__init__(*arg, **kw)
     QtWidgets.QApplication.instance().aboutToQuit.connect(self.shutdown)
     self.setWindowTitle(self.tr("Photini error logging"))
     self.setLayout(QtWidgets.QVBoxLayout())
     # main dialog area
     self.text = QtWidgets.QTextEdit()
     self.text.setReadOnly(True)
     self.text.setMinimumWidth(width_for_text(self.text, 'x' * 70))
     self.layout().addWidget(self.text)
     # buttons
     button_box = QtWidgets.QDialogButtonBox(
         QtWidgets.QDialogButtonBox.Save | QtWidgets.QDialogButtonBox.Close)
     button_box.button(QtWidgets.QDialogButtonBox.Save).clicked.connect(
         self.save)
     button_box.button(QtWidgets.QDialogButtonBox.Close).clicked.connect(
         self.hide)
     self.layout().addWidget(button_box)
     # Python logger
     self.logger = logging.getLogger('')
     for handler in list(self.logger.handlers):
         self.logger.removeHandler(handler)
     threshold = logging.ERROR - (verbose * 10)
     self.logger.setLevel(max(threshold, 1))
     self.stream_proxy = StreamProxy(self)
     self.stream_proxy.write_text.connect(self.write)
     self.stream_proxy.flush_text.connect(self.flush)
     handler = logging.StreamHandler(self.stream_proxy)
     handler.setFormatter(
         logging.Formatter(
             '%(asctime)s: %(levelname)s: %(name)s: %(message)s',
             datefmt='%H:%M:%S'))
     handler.addFilter(LoggerFilter(threshold))
     self.logger.addHandler(handler)
     # intercept stdout and stderr, if they exist
     if sys.stderr:
         sys.stderr = OutputInterceptor('stderr', sys.stderr)
     if sys.stdout:
         sys.stdout = OutputInterceptor('stdout', sys.stdout)