COMMON: logger_config.py, added QT log handling to enable a logging panel in the GUI
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user