dcs-retribution/qt_ui/logging_handler.py
2021-08-01 15:42:14 -07:00

39 lines
886 B
Python

import logging
import typing
LogHook = typing.Callable[[str], None]
class HookableInMemoryHandler(logging.Handler):
"""Hookable in-memory logging handler for logs window"""
_log: str
_hook: typing.Optional[typing.Callable[[str], None]]
def __init__(self, *args, **kwargs):
super(HookableInMemoryHandler, self).__init__(*args, **kwargs)
self._log = ""
self._hook = None
@property
def log(self) -> str:
return self._log
def emit(self, record):
msg = self.format(record)
self._log += msg + "\n"
if self._hook is not None:
self._hook(msg)
def write(self, m):
pass
def clearLog(self) -> None:
self._log = ""
def setHook(self, hook: typing.Callable[[str], None]) -> None:
self._hook = hook
def clearHook(self) -> None:
self._hook = None