COMMON: logger_config.py, added QT log handling to enable a logging panel in the GUI

This commit is contained in:
2025-10-30 11:02:19 +01:00
parent 3d35413fcd
commit cbe049a8e9
+41 -1
View File
@@ -3,7 +3,24 @@ import logging.config
import yaml
import os
def setup_logger(name="aaredaq", base_dir: str | None = None):
from PySide6.QtCore import QObject, Signal
class QtLogEmitter(QObject):
message = Signal(str)
class QtLogHandler(logging.Handler):
def __init__(self, emitter: QtLogEmitter):
super().__init__()
self.emitter = emitter
def emit(self, record: logging.LogRecord):
try:
msg = self.format(record)
self.emitter.message.emit(msg)
except Exception:
self.handleError(record)
def setup_logger(name="aaredaq", base_dir: str | None = '/tmp/mxlogs'):
# switch to production mode using: $ APP_ENV=prod python main.py
env = os.getenv("APP_ENV", "dev") # default: dev
config_file = (
@@ -41,4 +58,27 @@ def setup_logger(name="aaredaq", base_dir: str | None = None):
logging.getLogger("redis_lock").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
logging.getLogger("matplotlib.font_manager").setLevel(logging.WARNING)
logging.getLogger("aaredaq").setLevel(logging.DEBUG) # DAQ
logging.getLogger("aaregui").setLevel(logging.INFO)
return logging.getLogger(name)
def find_existing_formatter(default_fmt="%(asctime)s [%(levelname)s] %(name)s: %(message)s", default_datefmt=None):
root = logging.getLogger()
for h in root.handlers:
if h.formatter:
return h.formatter
for logger_name, logger in logging.Logger.manager.loggerDict.items():
if isinstance(logger, logging.Logger):
for h in logger.handlers:
if h.formatter:
return h.formatter
return logging.Formatter(default_fmt, datefmt=default_datefmt)
def attach_to_logger(logger_name: str = "", handler: logging.Handler = None):
logging.getLogger(logger_name).addHandler(handler)