27 lines
813 B
Python
27 lines
813 B
Python
import queue
|
|
import re
|
|
from loguru import logger
|
|
|
|
# 全局日志队列
|
|
log_queue = queue.Queue()
|
|
|
|
def ansi_cleaner(text):
|
|
"""去除 loguru 输出中的颜色代码,防止在 UI 显示乱码"""
|
|
ansi_escape = re.compile(r"\x1b\[[0-9;]*m")
|
|
return ansi_escape.sub("", text)
|
|
|
|
def queue_sink(message):
|
|
"""Loguru 的回调函数"""
|
|
clean_msg = ansi_cleaner(message)
|
|
log_queue.put(clean_msg)
|
|
|
|
def setup_logging():
|
|
"""配置日志系统"""
|
|
# 清除默认的控制台输出,防止干扰
|
|
logger.remove()
|
|
|
|
# 添加队列输出 (给 UI 用)
|
|
logger.add(queue_sink, format="{time:HH:mm:ss} | {level: <8} | {message}", level="INFO")
|
|
|
|
# 添加文件输出 (给开发者排查用)
|
|
# logger.add("logs/app_runtime.log", rotation="1 MB", encoding="utf-8", level="DEBUG") |