diff options
Diffstat (limited to 'qutebrowser/utils/log.py')
-rw-r--r-- | qutebrowser/utils/log.py | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index db72e1a21..040e75f16 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -35,7 +35,7 @@ import argparse from typing import (TYPE_CHECKING, Any, Iterator, Mapping, MutableSequence, Optional, Set, Tuple, Union) -from PyQt5 import QtCore +from qutebrowser.qt import core as qtcore # Optional imports try: import colorama @@ -211,13 +211,13 @@ def init_log(args: argparse.Namespace) -> None: root.setLevel(logging.NOTSET) logging.captureWarnings(True) _init_py_warnings() - QtCore.qInstallMessageHandler(qt_message_handler) + qtcore.qInstallMessageHandler(qt_message_handler) _log_inited = True -@QtCore.pyqtSlot() +@qtcore.pyqtSlot() def shutdown_log() -> None: - QtCore.qInstallMessageHandler(None) + qtcore.qInstallMessageHandler(None) def _init_py_warnings() -> None: @@ -236,11 +236,11 @@ def _init_py_warnings() -> None: @contextlib.contextmanager def disable_qt_msghandler() -> Iterator[None]: """Contextmanager which temporarily disables the Qt message handler.""" - old_handler = QtCore.qInstallMessageHandler(None) + old_handler = qtcore.qInstallMessageHandler(None) try: yield finally: - QtCore.qInstallMessageHandler(old_handler) + qtcore.qInstallMessageHandler(old_handler) @contextlib.contextmanager @@ -378,8 +378,8 @@ def change_console_formatter(level: int) -> None: assert isinstance(old_formatter, JSONFormatter), old_formatter -def qt_message_handler(msg_type: QtCore.QtMsgType, - context: QtCore.QMessageLogContext, +def qt_message_handler(msg_type: qtcore.QtMsgType, + context: qtcore.QMessageLogContext, msg: str) -> None: """Qt message handler to redirect qWarning etc. to the logging system. @@ -392,18 +392,12 @@ def qt_message_handler(msg_type: QtCore.QtMsgType, # Note we map critical to ERROR as it's actually "just" an error, and fatal # to critical. qt_to_logging = { - QtCore.QtDebugMsg: logging.DEBUG, - QtCore.QtWarningMsg: logging.WARNING, - QtCore.QtCriticalMsg: logging.ERROR, - QtCore.QtFatalMsg: logging.CRITICAL, + qtcore.QtMsgType.QtDebugMsg: logging.DEBUG, + qtcore.QtMsgType.QtWarningMsg: logging.WARNING, + qtcore.QtMsgType.QtCriticalMsg: logging.ERROR, + qtcore.QtMsgType.QtFatalMsg: logging.CRITICAL, + qtcore.QtMsgType.QtInfoMsg: logging.INFO, } - try: - qt_to_logging[QtCore.QtInfoMsg] = logging.INFO - except AttributeError: - # Added in Qt 5.5. - # While we don't support Qt < 5.5 anymore, logging still needs to work so that - # the Qt version warning in earlyinit.py does. - pass # Change levels of some well-known messages to debug so they don't get # shown to the user. @@ -468,6 +462,8 @@ def qt_message_handler(msg_type: QtCore.QtMsgType, # https://bugreports.qt.io/browse/QTBUG-76391 "Attribute Qt::AA_ShareOpenGLContexts must be set before " "QCoreApplication is created.", + # Qt 6.4 beta 1: https://bugreports.qt.io/browse/QTBUG-104741 + "GL format 0 is not supported", ] # not using utils.is_mac here, because we can't be sure we can successfully # import the utils module here. @@ -483,6 +479,11 @@ def qt_message_handler(msg_type: QtCore.QtMsgType, if any(msg.strip().startswith(pattern) for pattern in suppressed_msgs): level = logging.DEBUG + elif context.category == "qt.webenginecontext" and ( + msg.strip().startswith("GL Type: ") or # Qt 6.3 + msg.strip().startswith("GLImplementation:") # Qt 6.2 + ): + level = logging.DEBUG else: level = qt_to_logging[msg_type] |