|
|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
from loguru import logger
|
|
|
|
|
from typing import Dict, Optional, Union, List
|
|
|
|
|
from typing import Dict, Optional, Union, List, Tuple
|
|
|
|
|
import sys
|
|
|
|
|
import os
|
|
|
|
|
from types import ModuleType
|
|
|
|
|
@ -26,12 +26,17 @@ LoguruLogger = logger.__class__
|
|
|
|
|
|
|
|
|
|
# 全局注册表:记录模块与处理器ID的映射
|
|
|
|
|
_handler_registry: Dict[str, List[int]] = {}
|
|
|
|
|
_custom_style_handlers: Dict[Tuple[str, str], List[int]] = {} # 记录自定义样式处理器ID
|
|
|
|
|
|
|
|
|
|
# 获取日志存储根地址
|
|
|
|
|
current_file_path = Path(__file__).resolve()
|
|
|
|
|
LOG_ROOT = "logs"
|
|
|
|
|
|
|
|
|
|
SIMPLE_OUTPUT = os.getenv("SIMPLE_OUTPUT", "false")
|
|
|
|
|
SIMPLE_OUTPUT = os.getenv("SIMPLE_OUTPUT", "false").strip().lower()
|
|
|
|
|
if SIMPLE_OUTPUT == "true":
|
|
|
|
|
SIMPLE_OUTPUT = True
|
|
|
|
|
else:
|
|
|
|
|
SIMPLE_OUTPUT = False
|
|
|
|
|
print(f"SIMPLE_OUTPUT: {SIMPLE_OUTPUT}")
|
|
|
|
|
|
|
|
|
|
if not SIMPLE_OUTPUT:
|
|
|
|
|
@ -42,10 +47,7 @@ if not SIMPLE_OUTPUT:
|
|
|
|
|
"file_level": "DEBUG",
|
|
|
|
|
# 格式配置
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
"<level>{time:YYYY-MM-DD HH:mm:ss}</level> | <cyan>{extra[module]: <12}</cyan> | <level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | {message}",
|
|
|
|
|
"log_dir": LOG_ROOT,
|
|
|
|
|
@ -59,7 +61,7 @@ else:
|
|
|
|
|
"console_level": "INFO",
|
|
|
|
|
"file_level": "DEBUG",
|
|
|
|
|
# 格式配置
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <cyan>{extra[module]}</cyan> | {message}",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <cyan>{extra[module]}</cyan> | {message}",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | {message}",
|
|
|
|
|
"log_dir": LOG_ROOT,
|
|
|
|
|
"rotation": "00:00",
|
|
|
|
|
@ -68,13 +70,30 @@ else:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MAIN_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<light-yellow>主程序</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 主程序 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<level>{time:MM-DD HH:mm}</level> | <light-yellow>主程序</light-yellow> | <light-yellow>{message}</light-yellow>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 主程序 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 海马体日志样式配置
|
|
|
|
|
MEMORY_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-yellow>海马体</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
@ -82,7 +101,7 @@ MEMORY_STYLE_CONFIG = {
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:MM-DD HH:mm}</green> | <light-yellow>海马体</light-yellow> | <light-yellow>{message}</light-yellow>"
|
|
|
|
|
"<level>{time:MM-DD HH:mm}</level> | <light-yellow>海马体</light-yellow> | <light-yellow>{message}</light-yellow>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}",
|
|
|
|
|
},
|
|
|
|
|
@ -92,9 +111,8 @@ MEMORY_STYLE_CONFIG = {
|
|
|
|
|
PFC_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-yellow>PFC</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
@ -102,7 +120,7 @@ PFC_STYLE_CONFIG = {
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:MM-DD HH:mm}</green> | <light-green>PFC</light-green> | <light-green>{message}</light-green>"
|
|
|
|
|
"<level>{time:MM-DD HH:mm}</level> | <light-green>PFC</light-green> | <light-green>{message}</light-green>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC | {message}",
|
|
|
|
|
},
|
|
|
|
|
@ -112,16 +130,15 @@ PFC_STYLE_CONFIG = {
|
|
|
|
|
MOOD_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-green>心情</light-green> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <magenta>心情</magenta> | {message}",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <magenta>心情</magenta> | {message}",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -129,16 +146,15 @@ MOOD_STYLE_CONFIG = {
|
|
|
|
|
TOOL_USE_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<magenta>工具使用</magenta> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <magenta>工具使用</magenta> | {message}",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <magenta>工具使用</magenta> | {message}",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -148,16 +164,15 @@ TOOL_USE_STYLE_CONFIG = {
|
|
|
|
|
RELATION_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-magenta>关系</light-magenta> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <light-magenta>关系</light-magenta> | {message}",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-magenta>关系</light-magenta> | {message}",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -166,16 +181,15 @@ RELATION_STYLE_CONFIG = {
|
|
|
|
|
CONFIG_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-cyan>配置</light-cyan> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 配置 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <light-cyan>配置</light-cyan> | {message}",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-cyan>配置</light-cyan> | {message}",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 配置 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -183,16 +197,15 @@ CONFIG_STYLE_CONFIG = {
|
|
|
|
|
SENDER_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-yellow>消息发送</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息发送 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <green>消息发送</green> | {message}",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <green>消息发送</green> | {message}",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息发送 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -200,9 +213,8 @@ SENDER_STYLE_CONFIG = {
|
|
|
|
|
HEARTFLOW_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-yellow>麦麦大脑袋</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
@ -210,7 +222,7 @@ HEARTFLOW_STYLE_CONFIG = {
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:MM-DD HH:mm}</green> | <light-green>麦麦大脑袋</light-green> | <light-green>{message}</light-green>"
|
|
|
|
|
"<level>{time:MM-DD HH:mm}</level> | <light-green>麦麦大脑袋</light-green> | <light-green>{message}</light-green>"
|
|
|
|
|
), # noqa: E501
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦大脑袋 | {message}",
|
|
|
|
|
},
|
|
|
|
|
@ -219,16 +231,15 @@ HEARTFLOW_STYLE_CONFIG = {
|
|
|
|
|
SCHEDULE_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-yellow>在干嘛</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 在干嘛 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <cyan>在干嘛</cyan> | <cyan>{message}</cyan>",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <cyan>在干嘛</cyan> | <cyan>{message}</cyan>",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 在干嘛 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -236,16 +247,15 @@ SCHEDULE_STYLE_CONFIG = {
|
|
|
|
|
LLM_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-yellow>麦麦组织语言</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦组织语言 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <light-green>麦麦组织语言</light-green> | {message}",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-green>麦麦组织语言</light-green> | {message}",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦组织语言 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -255,16 +265,15 @@ LLM_STYLE_CONFIG = {
|
|
|
|
|
TOPIC_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-blue>话题</light-blue> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 话题 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <light-blue>主题</light-blue> | {message}",
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-blue>主题</light-blue> | {message}",
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 话题 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -273,9 +282,8 @@ TOPIC_STYLE_CONFIG = {
|
|
|
|
|
CHAT_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-blue>见闻</light-blue> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
@ -283,7 +291,7 @@ CHAT_STYLE_CONFIG = {
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:MM-DD HH:mm}</green> | <light-blue>见闻</light-blue> | <green>{message}</green>"
|
|
|
|
|
"<level>{time:MM-DD HH:mm}</level> | <light-blue>见闻</light-blue> | <green>{message}</green>"
|
|
|
|
|
), # noqa: E501
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 见闻 | {message}",
|
|
|
|
|
},
|
|
|
|
|
@ -292,9 +300,8 @@ CHAT_STYLE_CONFIG = {
|
|
|
|
|
SUB_HEARTFLOW_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-blue>麦麦小脑袋</light-blue> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
@ -302,7 +309,7 @@ SUB_HEARTFLOW_STYLE_CONFIG = {
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:MM-DD HH:mm}</green> | <light-blue>麦麦小脑袋</light-blue> | <light-blue>{message}</light-blue>"
|
|
|
|
|
"<level>{time:MM-DD HH:mm}</level> | <light-blue>麦麦小脑袋</light-blue> | <light-blue>{message}</light-blue>"
|
|
|
|
|
), # noqa: E501
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}",
|
|
|
|
|
},
|
|
|
|
|
@ -311,16 +318,15 @@ SUB_HEARTFLOW_STYLE_CONFIG = {
|
|
|
|
|
WILLING_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-blue>意愿</light-blue> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 意愿 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <light-blue>意愿 | {message} </light-blue>", # noqa: E501
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-blue>意愿 | {message} </light-blue>", # noqa: E501
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 意愿 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -329,16 +335,15 @@ WILLING_STYLE_CONFIG = {
|
|
|
|
|
MAI_STATE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-blue>麦麦状态</light-blue> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦状态 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": "<green>{time:MM-DD HH:mm}</green> | <light-blue>麦麦状态 | {message} </light-blue>", # noqa: E501
|
|
|
|
|
"console_format": "<level>{time:MM-DD HH:mm}</level> | <light-blue>麦麦状态 | {message} </light-blue>", # noqa: E501
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦状态 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
@ -347,9 +352,8 @@ MAI_STATE_CONFIG = {
|
|
|
|
|
LPMM_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<cyan>{extra[module]: <12}</cyan> | "
|
|
|
|
|
"<light-yellow>LPMM</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
@ -357,18 +361,38 @@ LPMM_STYLE_CONFIG = {
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<green>{time:MM-DD HH:mm}</green> | <light-green>LPMM</light-green> | <light-green>{message}</light-green>"
|
|
|
|
|
"<level>{time:MM-DD HH:mm}</level> | <light-green>LPMM</light-green> | <light-green>{message}</light-green>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 兴趣log
|
|
|
|
|
INTEREST_STYLE_CONFIG = {
|
|
|
|
|
"advanced": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<white>{time:YYYY-MM-DD HH:mm:ss}</white> | "
|
|
|
|
|
"<level>{level: <8}</level> | "
|
|
|
|
|
"<light-yellow>兴趣</light-yellow> | "
|
|
|
|
|
"<level>{message}</level>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 兴趣 | {message}",
|
|
|
|
|
},
|
|
|
|
|
"simple": {
|
|
|
|
|
"console_format": (
|
|
|
|
|
"<level>{time:MM-DD HH:mm}</level> | <light-green>兴趣</light-green> | <light-green>{message}</light-green>"
|
|
|
|
|
),
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 兴趣 | {message}",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CONFIRM_STYLE_CONFIG = {
|
|
|
|
|
"console_format": "<RED>{message}</RED>", # noqa: E501
|
|
|
|
|
"file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | EULA与PRIVACY确认 | {message}",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 根据SIMPLE_OUTPUT选择配置
|
|
|
|
|
MAIN_STYLE_CONFIG = MAIN_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MAIN_STYLE_CONFIG["advanced"]
|
|
|
|
|
MEMORY_STYLE_CONFIG = MEMORY_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MEMORY_STYLE_CONFIG["advanced"]
|
|
|
|
|
TOPIC_STYLE_CONFIG = TOPIC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else TOPIC_STYLE_CONFIG["advanced"]
|
|
|
|
|
SENDER_STYLE_CONFIG = SENDER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SENDER_STYLE_CONFIG["advanced"]
|
|
|
|
|
@ -387,6 +411,7 @@ CONFIG_STYLE_CONFIG = CONFIG_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CONFIG
|
|
|
|
|
TOOL_USE_STYLE_CONFIG = TOOL_USE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else TOOL_USE_STYLE_CONFIG["advanced"]
|
|
|
|
|
PFC_STYLE_CONFIG = PFC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PFC_STYLE_CONFIG["advanced"]
|
|
|
|
|
LPMM_STYLE_CONFIG = LPMM_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else LPMM_STYLE_CONFIG["advanced"]
|
|
|
|
|
INTEREST_STYLE_CONFIG = INTEREST_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else INTEREST_STYLE_CONFIG["advanced"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def is_registered_module(record: dict) -> bool:
|
|
|
|
|
@ -451,7 +476,7 @@ def get_module_logger(
|
|
|
|
|
sink=sys.stderr,
|
|
|
|
|
level=os.getenv("CONSOLE_LOG_LEVEL", console_level or current_config["console_level"]),
|
|
|
|
|
format=current_config["console_format"],
|
|
|
|
|
filter=lambda record: record["extra"].get("module") == module_name,
|
|
|
|
|
filter=lambda record: record["extra"].get("module") == module_name and "custom_style" not in record["extra"],
|
|
|
|
|
enqueue=True,
|
|
|
|
|
)
|
|
|
|
|
handler_ids.append(console_id)
|
|
|
|
|
@ -470,7 +495,7 @@ def get_module_logger(
|
|
|
|
|
retention=current_config["retention"],
|
|
|
|
|
compression=current_config["compression"],
|
|
|
|
|
encoding="utf-8",
|
|
|
|
|
filter=lambda record: record["extra"].get("module") == module_name,
|
|
|
|
|
filter=lambda record: record["extra"].get("module") == module_name and "custom_style" not in record["extra"],
|
|
|
|
|
enqueue=True,
|
|
|
|
|
)
|
|
|
|
|
handler_ids.append(file_id)
|
|
|
|
|
@ -487,6 +512,87 @@ def get_module_logger(
|
|
|
|
|
return logger.bind(module=module_name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def add_custom_style_handler(
|
|
|
|
|
module_name: str,
|
|
|
|
|
style_name: str,
|
|
|
|
|
console_format: str,
|
|
|
|
|
console_level: str = "INFO",
|
|
|
|
|
# file_format: Optional[str] = None, # 暂时只支持控制台
|
|
|
|
|
# file_level: str = "DEBUG",
|
|
|
|
|
# config: Optional[LogConfig] = None, # 暂时不使用全局配置
|
|
|
|
|
) -> None:
|
|
|
|
|
"""为指定模块和样式名添加自定义日志处理器(目前仅支持控制台)."""
|
|
|
|
|
handler_key = (module_name, style_name)
|
|
|
|
|
|
|
|
|
|
# 如果已存在该模块和样式的处理器,则不重复添加
|
|
|
|
|
if handler_key in _custom_style_handlers:
|
|
|
|
|
# print(f"Custom handler for {handler_key} already exists.")
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
handler_ids = []
|
|
|
|
|
|
|
|
|
|
# 添加自定义控制台处理器
|
|
|
|
|
try:
|
|
|
|
|
custom_console_id = logger.add(
|
|
|
|
|
sink=sys.stderr,
|
|
|
|
|
level=os.getenv(f"{module_name.upper()}_{style_name.upper()}_CONSOLE_LEVEL", console_level),
|
|
|
|
|
format=console_format,
|
|
|
|
|
filter=lambda record: record["extra"].get("module") == module_name
|
|
|
|
|
and record["extra"].get("custom_style") == style_name,
|
|
|
|
|
enqueue=True,
|
|
|
|
|
)
|
|
|
|
|
handler_ids.append(custom_console_id)
|
|
|
|
|
# print(f"Added custom console handler {custom_console_id} for {handler_key}")
|
|
|
|
|
except Exception as e:
|
|
|
|
|
logger.error(f"Failed to add custom console handler for {handler_key}: {e}")
|
|
|
|
|
# 如果添加失败,确保列表为空,避免记录不存在的ID
|
|
|
|
|
handler_ids = []
|
|
|
|
|
|
|
|
|
|
# # 文件处理器 (可选,按需启用)
|
|
|
|
|
# if file_format:
|
|
|
|
|
# current_config = config.config if config else DEFAULT_CONFIG
|
|
|
|
|
# log_dir = Path(current_config["log_dir"])
|
|
|
|
|
# log_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
# # 可以考虑将自定义样式的日志写入单独文件或模块主文件
|
|
|
|
|
# log_file = log_dir / module_name / f"{style_name}_{{time:YYYY-MM-DD}}.log"
|
|
|
|
|
# log_file.parent.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
# try:
|
|
|
|
|
# custom_file_id = logger.add(
|
|
|
|
|
# sink=str(log_file),
|
|
|
|
|
# level=os.getenv(f"{module_name.upper()}_{style_name.upper()}_FILE_LEVEL", file_level),
|
|
|
|
|
# format=file_format,
|
|
|
|
|
# rotation=current_config["rotation"],
|
|
|
|
|
# retention=current_config["retention"],
|
|
|
|
|
# compression=current_config["compression"],
|
|
|
|
|
# encoding="utf-8",
|
|
|
|
|
# filter=lambda record: record["extra"].get("module") == module_name
|
|
|
|
|
# and record["extra"].get("custom_style") == style_name,
|
|
|
|
|
# enqueue=True,
|
|
|
|
|
# )
|
|
|
|
|
# handler_ids.append(custom_file_id)
|
|
|
|
|
# except Exception as e:
|
|
|
|
|
# logger.error(f"Failed to add custom file handler for {handler_key}: {e}")
|
|
|
|
|
|
|
|
|
|
# 更新自定义处理器注册表
|
|
|
|
|
if handler_ids:
|
|
|
|
|
_custom_style_handlers[handler_key] = handler_ids
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def remove_custom_style_handler(module_name: str, style_name: str) -> None:
|
|
|
|
|
"""移除指定模块和样式名的自定义日志处理器."""
|
|
|
|
|
handler_key = (module_name, style_name)
|
|
|
|
|
if handler_key in _custom_style_handlers:
|
|
|
|
|
for handler_id in _custom_style_handlers[handler_key]:
|
|
|
|
|
try:
|
|
|
|
|
logger.remove(handler_id)
|
|
|
|
|
# print(f"Removed custom handler {handler_id} for {handler_key}")
|
|
|
|
|
except ValueError:
|
|
|
|
|
# 可能已经被移除或不存在
|
|
|
|
|
# print(f"Handler {handler_id} for {handler_key} already removed or invalid.")
|
|
|
|
|
pass
|
|
|
|
|
del _custom_style_handlers[handler_key]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def remove_module_logger(module_name: str) -> None:
|
|
|
|
|
"""清理指定模块的日志处理器"""
|
|
|
|
|
if module_name in _handler_registry:
|
|
|
|
|
|