Files
dx_sl/logger_utils_new.py
2025-09-01 12:08:41 +08:00

74 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# logger_utils.py
import queue
import datetime
from colorama import Fore, Style, init
# 初始化 colorama仅 Windows 需要)
init(autoreset=True)
# 日志等级颜色映射(控制台 + UI
# LOG_COLORS → 控制台日志颜色(命令行)
# LOG_STYLES → UI 日志样式(图形界面)
LOG_COLORS = {
'default': Fore.CYAN,
'info': Fore.CYAN,
'warning': Fore.YELLOW,
'error': Fore.RED,
'trigger': Fore.GREEN,
}
# 【新增】UI 样式映射
LOG_STYLES = {
'default': {'color': 'cyan'},
'info': {'color': 'cyan'},
'warning': {'color': 'yellow'},
'error': {'color': 'red'},
'trigger': {'color': '#28a745'},
}
class Logger:
def __init__(self):
self.log_queue = queue.Queue()
self.append_log_func = None # 主程序的日志回调函数
def set_append_log(self, func):
"""设置主程序中的 append_log 函数"""
self.append_log_func = func
def log(self, message, level='default'):
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
full_message = f"[{timestamp}] {message}"
# 控制台带颜色输出
color = LOG_COLORS.get(level.lower(), Fore.WHITE)
print(f"{color}{full_message}{Style.RESET_ALL}")
# 触发UI更新如果已注册
if self.append_log_func:
log_type = level.lower()
style = LOG_STYLES.get(log_type, LOG_STYLES['default'])
# 调用主程序的 append_log 方法,只传递纯文本和日志类型
self.append_log_func(full_message, log_type)
def info(self, message): self.log(message, 'info')
def warning(self, message): self.log(message, 'warning')
def error(self, message): self.log(message, 'error')
def trigger(self, message): self.log(message, 'trigger')
def debug(self, message): self.log(message, 'debug')
# 全局日志实例
global_logger = Logger()
# 便捷方法,方便其他模块直接使用
def setup_logger(append_log_func):
global_logger.set_append_log(append_log_func)
def log_info(msg): global_logger.info(msg)
def log_warning(msg): global_logger.warning(msg)
def log_error(msg): global_logger.error(msg)
def log_trigger(msg): global_logger.trigger(msg)
def log_debug(msg): global_logger.debug(msg)