大屏分屏控制软件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.3 KiB

"""
全局日志管理器
"""
from PyQt5.QtCore import QObject, pyqtSignal
# --- 1. 定义信号发射器 ---
class SignalEmitter(QObject):
log_signal = pyqtSignal(str, str)
# --- 2. 定义 Logger 类 (这是之前缺失的核心) ---
class Logger:
def __init__(self):
# 创建信号发射器实例
self.emitter = SignalEmitter()
# 连接信号到槽函数
self.emitter.log_signal.connect(self._on_log_received)
# 存储回调函数(即日志面板的接收方法)
self.log_callbacks = []
def _on_log_received(self, message, level):
"""实际处理日志的地方"""
for callback in self.log_callbacks:
callback(message, level)
def add_listener(self, func):
"""注册日志监听者"""
self.log_callbacks.append(func)
def log(self, msg, level="INFO"):
"""供其他模块调用的方法"""
self.emitter.log_signal.emit(msg, level)
# 便捷方法
def info(self, msg):
self.log(msg, "INFO")
def debug(self, msg):
self.log(msg, "DEBUG")
def warning(self, msg):
self.log(msg, "WARNING")
def error(self, msg):
self.log(msg, "ERROR")
# --- 3. 创建全局实例 ---
# 这行代码必须在类定义之后
logger = Logger()