import logging class LogHandler(logging.Handler): _instance = None _widget = None def __new__(cls): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance def __init__(self): if not hasattr(self, '_initialized'): super().__init__() self._initialized = True self.setFormatter(logging.Formatter('%(message)s')) @classmethod def set_widget(cls, widget): cls._widget = widget def emit(self, record): if self._widget: self._widget.append_log( record.levelname, self.format(record) ) def setup_logger(): """设置全局日志配置""" # 配置根日志记录器 root_logger = logging.getLogger() root_logger.setLevel(logging.DEBUG) # 获取或创建日志处理器实例 handler = LogHandler() # 检查是否已经添加了这个处理器 for existing_handler in root_logger.handlers: if isinstance(existing_handler, LogHandler): return handler # 如果没有,则添加处理器 root_logger.addHandler(handler) return handler logger = logging.getLogger(__name__)