feat: colorize console logs by message category

This commit is contained in:
2026-03-01 17:28:49 +08:00
parent f8a714801b
commit 219a265a5e

View File

@@ -31,6 +31,17 @@ def _get_transfer_group(acc_id: str) -> str:
# ========== 日志配置(轮转:按大小 10MB保留 7 份)==========
class _AnsiColorFormatter(logging.Formatter):
RESET = "\033[0m"
# 业务消息类型颜色(优先于 level
MESSAGE_COLOR_RULES = (
("[PROMPT->AI", "\033[94m"), # bright blue
("[THINK/", "\033[96m"), # bright cyan
("[REPLY->CUSTOMER]", "\033[92m"), # bright green
("Agent 回复", "\033[92m"), # bright green
("[ACTIVITY]", "\033[95m"), # bright magenta
("收到新消息", "\033[36m"), # cyan
("发送成功", "\033[32m"), # green
("防抖等待", "\033[93m"), # bright yellow
)
COLORS = {
logging.DEBUG: "\033[36m", # cyan
logging.INFO: "\033[32m", # green
@@ -47,6 +58,10 @@ class _AnsiColorFormatter(logging.Formatter):
msg = super().format(record)
if not self.use_color:
return msg
raw_msg = record.getMessage()
for key, color in self.MESSAGE_COLOR_RULES:
if key in raw_msg:
return f"{color}{msg}{self.RESET}"
color = self.COLORS.get(record.levelno, "")
if not color:
return msg