Philipp Hörist pushed to branch master at gajim / gajim
Commits: 3bece8a3 by Philipp Hörist at 2023-05-22T00:24:30+02:00 refactor: Logging: Use separate handler for console log
- - - - -
3 changed files:
- gajim/common/app.py - gajim/common/logging_helpers.py - gajim/gtk/xml_console.py
Changes:
===================================== gajim/common/app.py ===================================== @@ -77,7 +77,7 @@ app = None # type: GajimApplication window = None # type: MainWindow commands = None # type: ChatCommands -logging_records: list[logging.LogRecord] = [] +logging_records: list[str] = []
ged = ged_module.GlobalEventsDispatcher() # Global Events Dispatcher plugin_manager = cast(types.PluginManagerT, None) # Plugins Manager
===================================== gajim/common/logging_helpers.py ===================================== @@ -27,7 +27,7 @@ from gajim.common import configpaths from gajim.common.i18n import _
-LogCallback = Callable[[logging.LogRecord], None] +LogCallback = Callable[[str], None]
def parseLogLevel(arg: str) -> int: @@ -109,18 +109,19 @@ def colorize(text: str, color: str) -> str: return color + text + Colors.NONE
-class CustomStreamHandler(logging.StreamHandler): # pyright: ignore +class LogConsoleHandler(logging.StreamHandler): # pyright: ignore def __init__(self) -> None: super().__init__() # pyright: ignore self._callback: LogCallback | None = None
def emit(self, record: logging.LogRecord) -> None: - super().emit(record) + if record.levelno < logging.WARNING: + return
- if record.levelno >= logging.WARNING: - app.logging_records.append(record) - if self._callback is not None: - self._callback(record) + msg = self.format(record) + app.logging_records.append(msg) + if self._callback is not None: + self._callback(msg)
def set_callback(self, func: LogCallback | None @@ -174,7 +175,8 @@ def init() -> None: if os.name != 'nt': use_color = sys.stderr.isatty()
- _custom_stream_handler.setFormatter( + stream_handler = logging.StreamHandler() + stream_handler.setFormatter( FancyFormatter( '%(asctime)s %(levelname)s %(name)-35s %(message)s', '%x %H:%M:%S', @@ -184,22 +186,26 @@ def init() -> None:
root_log = logging.getLogger('gajim') root_log.setLevel(logging.WARNING) - root_log.addHandler(_custom_stream_handler) + root_log.addHandler(_log_console_handler) + root_log.addHandler(stream_handler) root_log.propagate = False
root_log = logging.getLogger('nbxmpp') root_log.setLevel(logging.ERROR) - root_log.addHandler(_custom_stream_handler) + root_log.addHandler(_log_console_handler) + root_log.addHandler(stream_handler) root_log.propagate = False
root_log = logging.getLogger('gnupg') root_log.setLevel(logging.WARNING) - root_log.addHandler(_custom_stream_handler) + root_log.addHandler(_log_console_handler) + root_log.addHandler(stream_handler) root_log.propagate = False
root_log = logging.getLogger('omemo_dr') root_log.setLevel(logging.WARNING) - root_log.addHandler(_custom_stream_handler) + root_log.addHandler(_log_console_handler) + root_log.addHandler(stream_handler) root_log.propagate = False
# GAJIM_DEBUG is set only on Windows when using Gajim-Debug.exe @@ -225,8 +231,8 @@ def set_quiet() -> None: parseAndSetLogLevels('.omemo_dr=CRITICAL')
-def get_stream_handler() -> CustomStreamHandler: - return _custom_stream_handler +def get_log_console_handler() -> LogConsoleHandler: + return _log_console_handler
def _redirect_output() -> None: @@ -247,7 +253,13 @@ def _cleanup_debug_logs() -> None: file.unlink()
-_custom_stream_handler = CustomStreamHandler() +_log_console_handler = LogConsoleHandler() +_log_console_handler.setFormatter( + logging.Formatter( + '%(asctime)s (%(levelname).1s) %(name)-35s | %(message)s\n', + '%x %H:%M:%S' + ) +)
if __name__ == '__main__':
===================================== gajim/gtk/xml_console.py ===================================== @@ -16,7 +16,6 @@ from typing import Optional from typing import Union
-import logging import time
import nbxmpp @@ -34,7 +33,7 @@ from gajim.common.events import StanzaReceived from gajim.common.events import StanzaSent from gajim.common.i18n import _ -from gajim.common.logging_helpers import get_stream_handler +from gajim.common.logging_helpers import get_log_console_handler
from gajim.gtk.builder import get_builder from gajim.gtk.const import Setting @@ -112,7 +111,7 @@ def __init__(self) -> None: for record in app.logging_records: self._add_log_record(record)
- log_handler = get_stream_handler() + log_handler = get_log_console_handler() log_handler.set_callback(self._add_log_record)
self._ui.stack.connect('notify::visible-child-name', @@ -132,7 +131,7 @@ def __init__(self) -> None: ])
def _on_destroy(self, *args: Any) -> None: - get_stream_handler().set_callback(None) + get_log_console_handler().set_callback(None) self._ui.popover.destroy() app.check_finalize(self)
@@ -185,12 +184,10 @@ def _create_tags(self) -> None: for tag_name in tags: self._ui.protocol_view.get_buffer().create_tag(tag_name)
- def _add_log_record(self, record: logging.LogRecord) -> None: + def _add_log_record(self, message: str) -> None: buf = self._ui.log_view.get_buffer() - msg = (f'{record.asctime} {record.levelname} {record.name} ' - f'{record.getMessage()}\n') end_iter = buf.get_end_iter() - buf.insert(end_iter, msg) + buf.insert(end_iter, message)
def _on_key_press(self, _widget: Gtk.Widget, event: Gdk.EventKey) -> None: if event.keyval == Gdk.KEY_Escape:
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/3bece8a37345cd3da122b9db67cf6054d...