mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Add HookableInMemoryHandler logging handler
This commit is contained in:
38
qt_ui/logging_handler.py
Normal file
38
qt_ui/logging_handler.py
Normal file
@@ -0,0 +1,38 @@
|
||||
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
|
||||
Reference in New Issue
Block a user