diff --git a/bot.py b/bot.py
index 3737279d3..f31a7d95f 100644
--- a/bot.py
+++ b/bot.py
@@ -7,7 +7,7 @@ import time
import platform
import traceback
from dotenv import load_dotenv
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
# from src.common.logger import LogConfig, CONFIRM_STYLE_CONFIG
from src.common.crash_logger import install_crash_handler
@@ -69,10 +69,9 @@ def load_env():
# 直接加载生产环境变量配置
if os.path.exists(".env"):
load_dotenv(".env", override=True)
- logger.success("成功加载环境变量配置")
+ logger.info("成功加载环境变量配置")
else:
- logger.error("未找到.env文件,请确保文件存在")
- raise FileNotFoundError("未找到.env文件,请确保文件存在")
+ logger.warn("未找到.env文件,请确保程序所需的环境变量被正确设置")
def scan_provider(env_config: dict):
@@ -199,6 +198,7 @@ def check_eula():
def raw_main():
+ load_env()
# 利用 TZ 环境变量设定程序工作的时区
if platform.system().lower() != "windows":
time.tzset()
@@ -211,8 +211,6 @@ def raw_main():
easter_egg()
- load_env()
-
env_config = {key: os.getenv(key) for key in os.environ}
scan_provider(env_config)
@@ -235,7 +233,7 @@ if __name__ == "__main__":
loop.run_until_complete(main_system.initialize())
loop.run_until_complete(main_system.schedule_tasks())
except KeyboardInterrupt:
- # loop.run_until_complete(global_api.stop())
+ # loop.run_until_complete(get_global_api().stop())
logger.warning("收到中断信号,正在优雅关闭...")
if loop and not loop.is_closed():
try:
diff --git a/docs/plugin_quick_start.md b/docs/plugin_quick_start.md
index f8ea8d5cf..a92d4afbb 100644
--- a/docs/plugin_quick_start.md
+++ b/docs/plugin_quick_start.md
@@ -39,7 +39,7 @@ from src.plugin_system import (
BasePlugin, register_plugin, BaseAction, BaseCommand,
ComponentInfo, ActionInfo, CommandInfo, ActionActivationType, ChatMode
)
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("my_first_plugin")
diff --git a/requirements.txt b/requirements.txt
index 4ac814b21..fc10ee665 100644
Binary files a/requirements.txt and b/requirements.txt differ
diff --git a/scripts/import_openie.py b/scripts/import_openie.py
index 66faaaf11..2dbaf6eb4 100644
--- a/scripts/import_openie.py
+++ b/scripts/import_openie.py
@@ -15,7 +15,7 @@ from src.chat.knowledge.embedding_store import EmbeddingManager
from src.chat.knowledge.llm_client import LLMClient
from src.chat.knowledge.open_ie import OpenIE
from src.chat.knowledge.kg_manager import KGManager
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.chat.knowledge.utils.hash import get_sha256
@@ -23,7 +23,7 @@ from src.chat.knowledge.utils.hash import get_sha256
ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
OPENIE_DIR = global_config["persistence"]["openie_data_path"] or os.path.join(ROOT_PATH, "data/openie")
-logger = get_module_logger("OpenIE导入")
+logger = get_logger("OpenIE导入")
def hash_deduplicate(
diff --git a/scripts/info_extraction.py b/scripts/info_extraction.py
index 2b18f8e37..b9815d2f6 100644
--- a/scripts/info_extraction.py
+++ b/scripts/info_extraction.py
@@ -12,7 +12,7 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from rich.progress import Progress # 替换为 rich 进度条
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.chat.knowledge.lpmmconfig import global_config
from src.chat.knowledge.ie_process import info_extract_from_str
from src.chat.knowledge.llm_client import LLMClient
@@ -28,7 +28,7 @@ from rich.progress import (
TextColumn,
)
-logger = get_module_logger("LPMM知识库-信息提取")
+logger = get_logger("LPMM知识库-信息提取")
ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
diff --git a/scripts/message_retrieval_script.py b/scripts/message_retrieval_script.py
index 1601e637c..3def2da00 100644
--- a/scripts/message_retrieval_script.py
+++ b/scripts/message_retrieval_script.py
@@ -32,7 +32,7 @@ sys.path.insert(0, str(project_root))
from src.chat.utils.chat_message_builder import build_readable_messages
from src.common.database.database_model import Messages
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.common.database.database import db
from src.config.config import global_config
from src.llm_models.utils_model import LLMRequest
diff --git a/scripts/mongodb_to_sqlite.py b/scripts/mongodb_to_sqlite.py
index 1a1793f40..938b4f7c7 100644
--- a/scripts/mongodb_to_sqlite.py
+++ b/scripts/mongodb_to_sqlite.py
@@ -42,7 +42,7 @@ from src.common.database.database_model import (
GraphNodes,
GraphEdges,
)
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("mongodb_to_sqlite")
diff --git a/scripts/raw_data_preprocessor.py b/scripts/raw_data_preprocessor.py
index 35fb21c9d..ee8960f66 100644
--- a/scripts/raw_data_preprocessor.py
+++ b/scripts/raw_data_preprocessor.py
@@ -5,7 +5,7 @@ import sys # 新增系统模块导入
import datetime # 新增导入
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.knowledge.lpmmconfig import global_config
logger = get_logger("lpmm")
diff --git a/src/api/apiforgui.py b/src/api/apiforgui.py
index 853e8b49b..e1cffebb6 100644
--- a/src/api/apiforgui.py
+++ b/src/api/apiforgui.py
@@ -1,6 +1,6 @@
from src.chat.heart_flow.heartflow import heartflow
from src.chat.heart_flow.sub_heartflow import ChatState
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
import time
logger = get_logger("api")
diff --git a/src/api/maigraphql/__init__.py b/src/api/maigraphql/__init__.py
index b0efa7f9a..c414911de 100644
--- a/src/api/maigraphql/__init__.py
+++ b/src/api/maigraphql/__init__.py
@@ -3,7 +3,7 @@ import strawberry
from fastapi import FastAPI
from strawberry.fastapi import GraphQLRouter
-from src.common.server import global_server
+from src.common.server import get_global_server
@strawberry.type
@@ -17,6 +17,6 @@ schema = strawberry.Schema(Query)
graphql_app = GraphQLRouter(schema)
-fast_api_app: FastAPI = global_server.get_app()
+fast_api_app: FastAPI = get_global_server().get_app()
fast_api_app.include_router(graphql_app, prefix="/graphql")
diff --git a/src/api/main.py b/src/api/main.py
index db3e697f1..81cd5a24a 100644
--- a/src/api/main.py
+++ b/src/api/main.py
@@ -6,9 +6,9 @@ import sys
# from src.chat.heart_flow.heartflow import heartflow
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
# from src.config.config import BotConfig
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.api.reload_config import reload_config as reload_config_func
-from src.common.server import global_server
+from src.common.server import get_global_server
from src.api.apiforgui import (
get_all_subheartflow_ids,
forced_change_subheartflow_status,
@@ -108,4 +108,4 @@ async def get_system_basic_info():
def start_api_server():
"""启动API服务器"""
- global_server.register_router(router, prefix="/api/v1")
+ get_global_server().register_router(router, prefix="/api/v1")
diff --git a/src/api/reload_config.py b/src/api/reload_config.py
index 5137f3331..087c47e4f 100644
--- a/src/api/reload_config.py
+++ b/src/api/reload_config.py
@@ -1,7 +1,7 @@
from fastapi import HTTPException
from rich.traceback import install
from src.config.config import get_config_dir, load_config
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
import os
install(extra_lines=3)
diff --git a/src/chat/actions/base_action.py b/src/chat/actions/base_action.py
index f33d870c5..3bb132fae 100644
--- a/src/chat/actions/base_action.py
+++ b/src/chat/actions/base_action.py
@@ -1,6 +1,6 @@
from abc import ABC, abstractmethod
from typing import Tuple, Dict, Type
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("base_action")
diff --git a/src/chat/actions/plugin_action.py b/src/chat/actions/plugin_action.py
index c2d17fb42..cc715ad4f 100644
--- a/src/chat/actions/plugin_action.py
+++ b/src/chat/actions/plugin_action.py
@@ -1,6 +1,6 @@
from typing import Tuple, Dict, Any, Optional
from src.chat.actions.base_action import BaseAction, register_action, ActionActivationType, ChatMode # noqa F401
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
import os
import inspect
import toml # 导入 toml 库
diff --git a/src/chat/command/command_handler.py b/src/chat/command/command_handler.py
index dfa7d92a9..58bc21347 100644
--- a/src/chat/command/command_handler.py
+++ b/src/chat/command/command_handler.py
@@ -1,7 +1,7 @@
import re
from abc import ABC, abstractmethod
from typing import Dict, List, Type, Optional, Tuple, Pattern
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.message_receive.message import MessageRecv
from src.chat.focus_chat.hfc_utils import create_empty_anchor_message
from src.chat.focus_chat.expressors.default_expressor import DefaultExpressor
diff --git a/src/chat/emoji_system/emoji_manager.py b/src/chat/emoji_system/emoji_manager.py
index 68495df61..2681077af 100644
--- a/src/chat/emoji_system/emoji_manager.py
+++ b/src/chat/emoji_system/emoji_manager.py
@@ -17,7 +17,7 @@ from src.common.database.database import db as peewee_db
from src.config.config import global_config
from src.chat.utils.utils_image import image_path_to_base64, image_manager
from src.llm_models.utils_model import LLMRequest
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from rich.traceback import install
install(extra_lines=3)
@@ -163,7 +163,7 @@ class MaiEmoji:
last_used_time=self.last_used_time,
)
- logger.success(f"[注册] 表情包信息保存到数据库: {self.filename} ({self.emotion})")
+ logger.info(f"[注册] 表情包信息保存到数据库: {self.filename} ({self.emotion})")
return True
@@ -317,7 +317,7 @@ async def clear_temp_emoji() -> None:
os.remove(file_path)
logger.debug(f"[清理] 删除: {filename}")
- logger.success("[清理] 完成")
+ logger.info("[清理] 完成")
async def clean_unused_emojis(emoji_dir: str, emoji_objects: List["MaiEmoji"]) -> None:
@@ -349,7 +349,7 @@ async def clean_unused_emojis(emoji_dir: str, emoji_objects: List["MaiEmoji"]) -
logger.error(f"[错误] 删除文件时出错 ({file_full_path}): {str(e)}")
if cleaned_count > 0:
- logger.success(f"[清理] 在目录 {emoji_dir} 中清理了 {cleaned_count} 个破损表情包。")
+ logger.info(f"[清理] 在目录 {emoji_dir} 中清理了 {cleaned_count} 个破损表情包。")
else:
logger.info(f"[清理] 目录 {emoji_dir} 中没有需要清理的。")
@@ -568,7 +568,7 @@ class EmojiManager:
# 输出清理结果
if removed_count > 0:
- logger.success(f"[清理] 已清理 {removed_count} 个失效/文件丢失的表情包记录")
+ logger.info(f"[清理] 已清理 {removed_count} 个失效/文件丢失的表情包记录")
logger.info(f"[统计] 清理前记录数: {total_count} | 清理后有效记录数: {len(self.emoji_objects)}")
else:
logger.info(f"[检查] 已检查 {total_count} 个表情包记录,全部完好")
@@ -645,7 +645,7 @@ class EmojiManager:
self.emoji_objects = emoji_objects
self.emoji_num = len(emoji_objects)
- logger.success(f"[数据库] 加载完成: 共加载 {self.emoji_num} 个表情包记录。")
+ logger.info(f"[数据库] 加载完成: 共加载 {self.emoji_num} 个表情包记录。")
if load_errors > 0:
logger.warning(f"[数据库] 加载过程中出现 {load_errors} 个错误。")
@@ -808,7 +808,7 @@ class EmojiManager:
if register_success:
self.emoji_objects.append(new_emoji)
self.emoji_num += 1
- logger.success(f"[成功] 注册: {new_emoji.filename}")
+ logger.info(f"[成功] 注册: {new_emoji.filename}")
return True
else:
logger.error(f"[错误] 注册表情包到数据库失败: {new_emoji.filename}")
@@ -973,7 +973,7 @@ class EmojiManager:
# 注册成功后,添加到内存列表
self.emoji_objects.append(new_emoji)
self.emoji_num += 1
- logger.success(f"[成功] 注册新表情包: {filename} (当前: {self.emoji_num}/{self.emoji_num_max})")
+ logger.info(f"[成功] 注册新表情包: {filename} (当前: {self.emoji_num}/{self.emoji_num_max})")
return True
else:
logger.error(f"[注册失败] 保存表情包到数据库/移动文件失败: {filename}")
diff --git a/src/chat/focus_chat/expressors/default_expressor.py b/src/chat/focus_chat/expressors/default_expressor.py
index 5bb11936a..b419b01b1 100644
--- a/src/chat/focus_chat/expressors/default_expressor.py
+++ b/src/chat/focus_chat/expressors/default_expressor.py
@@ -4,7 +4,7 @@ from src.chat.message_receive.message import MessageRecv, MessageThinking, Messa
from src.chat.message_receive.message import Seg # Local import needed after move
from src.chat.message_receive.message import UserInfo
from src.chat.message_receive.chat_stream import chat_manager
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.chat.utils.utils_image import image_path_to_base64 # Local import needed after move
diff --git a/src/chat/focus_chat/expressors/exprssion_learner.py b/src/chat/focus_chat/expressors/exprssion_learner.py
index ac2206fec..93420d0af 100644
--- a/src/chat/focus_chat/expressors/exprssion_learner.py
+++ b/src/chat/focus_chat/expressors/exprssion_learner.py
@@ -1,7 +1,7 @@
import time
import random
from typing import List, Dict, Optional, Any, Tuple
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp_random, build_anonymous_messages
diff --git a/src/chat/focus_chat/heartFC_Cycleinfo.py b/src/chat/focus_chat/heartFC_Cycleinfo.py
index 7900a16a2..37eea6e9a 100644
--- a/src/chat/focus_chat/heartFC_Cycleinfo.py
+++ b/src/chat/focus_chat/heartFC_Cycleinfo.py
@@ -1,7 +1,7 @@
import time
import os
from typing import Optional, Dict, Any
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
import json
logger = get_logger("hfc") # Logger Name Changed
diff --git a/src/chat/focus_chat/heartFC_chat.py b/src/chat/focus_chat/heartFC_chat.py
index d212579df..8d368c073 100644
--- a/src/chat/focus_chat/heartFC_chat.py
+++ b/src/chat/focus_chat/heartFC_chat.py
@@ -7,7 +7,7 @@ from typing import List, Optional, Dict, Any, Deque, Callable, Awaitable
from src.chat.message_receive.chat_stream import chat_manager
from rich.traceback import install
from src.chat.utils.prompt_builder import global_prompt_manager
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.utils.timer_calculator import Timer
from src.chat.heart_flow.observation.observation import Observation
from src.chat.focus_chat.heartFC_Cycleinfo import CycleDetail
diff --git a/src/chat/focus_chat/heartFC_sender.py b/src/chat/focus_chat/heartFC_sender.py
index b2e4849bd..772e086d3 100644
--- a/src/chat/focus_chat/heartFC_sender.py
+++ b/src/chat/focus_chat/heartFC_sender.py
@@ -1,10 +1,10 @@
import asyncio
from typing import Dict, Optional # 重新导入类型
from src.chat.message_receive.message import MessageSending, MessageThinking
-from src.common.message.api import global_api
+from src.common.message.api import get_global_api
from src.chat.message_receive.storage import MessageStorage
from src.chat.utils.utils import truncate_message
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.utils.utils import calculate_typing_time
from rich.traceback import install
import traceback
@@ -21,8 +21,8 @@ async def send_message(message: MessageSending) -> str:
try:
# 直接调用API发送消息
- await global_api.send_message(message)
- logger.success(f"已将消息 '{message_preview}' 发往平台'{message.message_info.platform}'")
+ await get_global_api().send_message(message)
+ logger.info(f"已将消息 '{message_preview}' 发往平台'{message.message_info.platform}'")
return message.processed_plain_text
except Exception as e:
diff --git a/src/chat/focus_chat/heartflow_message_processor.py b/src/chat/focus_chat/heartflow_message_processor.py
index b09b72bdd..ea9ce674c 100644
--- a/src/chat/focus_chat/heartflow_message_processor.py
+++ b/src/chat/focus_chat/heartflow_message_processor.py
@@ -6,7 +6,7 @@ from src.chat.heart_flow.heartflow import heartflow
from src.chat.message_receive.chat_stream import chat_manager, ChatStream
from src.chat.utils.utils import is_mentioned_bot_in_message
from src.chat.utils.timer_calculator import Timer
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.person_info.relationship_manager import relationship_manager
import math
diff --git a/src/chat/focus_chat/hfc_utils.py b/src/chat/focus_chat/hfc_utils.py
index 36907c4c0..faec67eb8 100644
--- a/src/chat/focus_chat/hfc_utils.py
+++ b/src/chat/focus_chat/hfc_utils.py
@@ -3,7 +3,7 @@ from typing import Optional
from src.chat.message_receive.message import MessageRecv, BaseMessageInfo
from src.chat.message_receive.chat_stream import ChatStream
from src.chat.message_receive.message import UserInfo
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
import json
logger = get_logger(__name__)
diff --git a/src/chat/focus_chat/info_processors/base_processor.py b/src/chat/focus_chat/info_processors/base_processor.py
index d5b90a5e9..4cf48617a 100644
--- a/src/chat/focus_chat/info_processors/base_processor.py
+++ b/src/chat/focus_chat/info_processors/base_processor.py
@@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
from typing import List, Any, Optional, Dict
from src.chat.focus_chat.info.info_base import InfoBase
from src.chat.heart_flow.observation.observation import Observation
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("base_processor")
diff --git a/src/chat/focus_chat/info_processors/chattinginfo_processor.py b/src/chat/focus_chat/info_processors/chattinginfo_processor.py
index 561b90f5d..90f0021dd 100644
--- a/src/chat/focus_chat/info_processors/chattinginfo_processor.py
+++ b/src/chat/focus_chat/info_processors/chattinginfo_processor.py
@@ -3,7 +3,7 @@ from src.chat.focus_chat.info.obs_info import ObsInfo
from src.chat.heart_flow.observation.observation import Observation
from src.chat.focus_chat.info.info_base import InfoBase
from .base_processor import BaseProcessor
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.heart_flow.observation.chatting_observation import ChattingObservation
from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation
from src.chat.focus_chat.info.cycle_info import CycleInfo
diff --git a/src/chat/focus_chat/info_processors/mind_processor.py b/src/chat/focus_chat/info_processors/mind_processor.py
index 9392ed324..1e36bb6be 100644
--- a/src/chat/focus_chat/info_processors/mind_processor.py
+++ b/src/chat/focus_chat/info_processors/mind_processor.py
@@ -4,7 +4,7 @@ from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
import time
import traceback
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.individuality.individuality import individuality
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from src.chat.utils.json_utils import safe_json_dumps
diff --git a/src/chat/focus_chat/info_processors/relationship_processor.py b/src/chat/focus_chat/info_processors/relationship_processor.py
index 9d25235c4..70ad994ac 100644
--- a/src/chat/focus_chat/info_processors/relationship_processor.py
+++ b/src/chat/focus_chat/info_processors/relationship_processor.py
@@ -4,7 +4,7 @@ from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
import time
import traceback
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from src.chat.message_receive.chat_stream import chat_manager
from src.person_info.relationship_manager import relationship_manager
diff --git a/src/chat/focus_chat/info_processors/self_processor.py b/src/chat/focus_chat/info_processors/self_processor.py
index a296dbe86..892c6713a 100644
--- a/src/chat/focus_chat/info_processors/self_processor.py
+++ b/src/chat/focus_chat/info_processors/self_processor.py
@@ -4,7 +4,7 @@ from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
import time
import traceback
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.individuality.individuality import individuality
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from src.chat.message_receive.chat_stream import chat_manager
diff --git a/src/chat/focus_chat/info_processors/tool_processor.py b/src/chat/focus_chat/info_processors/tool_processor.py
index 832b4d478..15856a8de 100644
--- a/src/chat/focus_chat/info_processors/tool_processor.py
+++ b/src/chat/focus_chat/info_processors/tool_processor.py
@@ -2,7 +2,7 @@ from src.chat.heart_flow.observation.chatting_observation import ChattingObserva
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
import time
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.individuality.individuality import individuality
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from src.tools.tool_use import ToolUser
diff --git a/src/chat/focus_chat/info_processors/working_memory_processor.py b/src/chat/focus_chat/info_processors/working_memory_processor.py
index af016e7bb..9a83dd7dd 100644
--- a/src/chat/focus_chat/info_processors/working_memory_processor.py
+++ b/src/chat/focus_chat/info_processors/working_memory_processor.py
@@ -4,7 +4,7 @@ from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
import time
import traceback
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from src.chat.message_receive.chat_stream import chat_manager
from .base_processor import BaseProcessor
diff --git a/src/chat/focus_chat/memory_activator.py b/src/chat/focus_chat/memory_activator.py
index 26178d961..a557999d1 100644
--- a/src/chat/focus_chat/memory_activator.py
+++ b/src/chat/focus_chat/memory_activator.py
@@ -3,7 +3,7 @@ from src.chat.heart_flow.observation.structure_observation import StructureObser
from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from datetime import datetime
from src.chat.memory_system.Hippocampus import hippocampus_manager
diff --git a/src/chat/focus_chat/planners/action_manager.py b/src/chat/focus_chat/planners/action_manager.py
index 71e256d13..a92bda199 100644
--- a/src/chat/focus_chat/planners/action_manager.py
+++ b/src/chat/focus_chat/planners/action_manager.py
@@ -4,7 +4,7 @@ from src.chat.heart_flow.observation.observation import Observation
from src.chat.focus_chat.replyer.default_replyer import DefaultReplyer
from src.chat.focus_chat.expressors.default_expressor import DefaultExpressor
from src.chat.message_receive.chat_stream import ChatStream
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
# 不再需要导入动作类,因为已经在main.py中导入
# import src.chat.actions.default_actions # noqa
diff --git a/src/chat/focus_chat/planners/modify_actions.py b/src/chat/focus_chat/planners/modify_actions.py
index 05d317a54..f6461bb35 100644
--- a/src/chat/focus_chat/planners/modify_actions.py
+++ b/src/chat/focus_chat/planners/modify_actions.py
@@ -1,6 +1,6 @@
from typing import List, Optional, Any, Dict
from src.chat.heart_flow.observation.observation import Observation
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.heart_flow.observation.hfcloop_observation import HFCloopObservation
from src.chat.heart_flow.observation.chatting_observation import ChattingObservation
from src.chat.message_receive.chat_stream import chat_manager
diff --git a/src/chat/focus_chat/planners/planner_factory.py b/src/chat/focus_chat/planners/planner_factory.py
index c92168238..e0215776b 100644
--- a/src/chat/focus_chat/planners/planner_factory.py
+++ b/src/chat/focus_chat/planners/planner_factory.py
@@ -3,7 +3,7 @@ from src.chat.focus_chat.planners.base_planner import BasePlanner
from src.chat.focus_chat.planners.planner_simple import ActionPlanner as SimpleActionPlanner
from src.chat.focus_chat.planners.action_manager import ActionManager
from src.config.config import global_config
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("planner_factory")
diff --git a/src/chat/focus_chat/planners/planner_simple.py b/src/chat/focus_chat/planners/planner_simple.py
index d7345095d..5bf159b36 100644
--- a/src/chat/focus_chat/planners/planner_simple.py
+++ b/src/chat/focus_chat/planners/planner_simple.py
@@ -11,7 +11,7 @@ from src.chat.focus_chat.info.action_info import ActionInfo
from src.chat.focus_chat.info.structured_info import StructuredInfo
from src.chat.focus_chat.info.self_info import SelfInfo
from src.chat.focus_chat.info.relation_info import RelationInfo
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from src.individuality.individuality import individuality
from src.chat.focus_chat.planners.action_manager import ActionManager
diff --git a/src/chat/focus_chat/replyer/default_replyer.py b/src/chat/focus_chat/replyer/default_replyer.py
index b69573fd8..bfd766169 100644
--- a/src/chat/focus_chat/replyer/default_replyer.py
+++ b/src/chat/focus_chat/replyer/default_replyer.py
@@ -4,7 +4,7 @@ from src.chat.message_receive.message import MessageRecv, MessageThinking, Messa
from src.chat.message_receive.message import Seg # Local import needed after move
from src.chat.message_receive.message import UserInfo
from src.chat.message_receive.chat_stream import chat_manager
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.chat.utils.utils_image import image_path_to_base64 # Local import needed after move
diff --git a/src/chat/focus_chat/working_memory/memory_manager.py b/src/chat/focus_chat/working_memory/memory_manager.py
index f574222b4..100f4f264 100644
--- a/src/chat/focus_chat/working_memory/memory_manager.py
+++ b/src/chat/focus_chat/working_memory/memory_manager.py
@@ -2,7 +2,7 @@ from typing import Dict, Any, Type, TypeVar, List, Optional
import traceback
from json_repair import repair_json
from rich.traceback import install
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.chat.focus_chat.working_memory.memory_item import MemoryItem
diff --git a/src/chat/focus_chat/working_memory/working_memory.py b/src/chat/focus_chat/working_memory/working_memory.py
index 190dc9362..005dfa02a 100644
--- a/src/chat/focus_chat/working_memory/working_memory.py
+++ b/src/chat/focus_chat/working_memory/working_memory.py
@@ -1,6 +1,6 @@
from typing import List, Any, Optional
import asyncio
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.focus_chat.working_memory.memory_manager import MemoryManager, MemoryItem
from src.config.config import global_config
diff --git a/src/chat/heart_flow/background_tasks.py b/src/chat/heart_flow/background_tasks.py
index 066f930b9..b24dad32b 100644
--- a/src/chat/heart_flow/background_tasks.py
+++ b/src/chat/heart_flow/background_tasks.py
@@ -1,7 +1,7 @@
import asyncio
import traceback
from typing import Optional, Coroutine, Callable, Any, List
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.heart_flow.subheartflow_manager import SubHeartflowManager
from src.config.config import global_config
diff --git a/src/chat/heart_flow/heartflow.py b/src/chat/heart_flow/heartflow.py
index d58c5cde2..c8c5d1295 100644
--- a/src/chat/heart_flow/heartflow.py
+++ b/src/chat/heart_flow/heartflow.py
@@ -1,5 +1,5 @@
from src.chat.heart_flow.sub_heartflow import SubHeartflow, ChatState
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from typing import Any, Optional, List
from src.chat.heart_flow.subheartflow_manager import SubHeartflowManager
from src.chat.heart_flow.background_tasks import BackgroundTaskManager # Import BackgroundTaskManager
diff --git a/src/chat/heart_flow/observation/actions_observation.py b/src/chat/heart_flow/observation/actions_observation.py
index 6550ddb72..12e972daf 100644
--- a/src/chat/heart_flow/observation/actions_observation.py
+++ b/src/chat/heart_flow/observation/actions_observation.py
@@ -1,7 +1,7 @@
# 定义了来自外部世界的信息
# 外部世界可以是某个聊天 不同平台的聊天 也可以是任意媒体
from datetime import datetime
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.focus_chat.planners.action_manager import ActionManager
logger = get_logger("observation")
diff --git a/src/chat/heart_flow/observation/chatting_observation.py b/src/chat/heart_flow/observation/chatting_observation.py
index 72dbb596f..f6a266735 100644
--- a/src/chat/heart_flow/observation/chatting_observation.py
+++ b/src/chat/heart_flow/observation/chatting_observation.py
@@ -14,7 +14,7 @@ import difflib
from src.chat.message_receive.message import MessageRecv # 添加 MessageRecv 导入
from src.chat.heart_flow.observation.observation import Observation
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.heart_flow.utils_chat import get_chat_type_and_target_info
from src.chat.utils.prompt_builder import Prompt
diff --git a/src/chat/heart_flow/observation/hfcloop_observation.py b/src/chat/heart_flow/observation/hfcloop_observation.py
index 02617cba8..42944fccd 100644
--- a/src/chat/heart_flow/observation/hfcloop_observation.py
+++ b/src/chat/heart_flow/observation/hfcloop_observation.py
@@ -1,7 +1,7 @@
# 定义了来自外部世界的信息
# 外部世界可以是某个聊天 不同平台的聊天 也可以是任意媒体
from datetime import datetime
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.focus_chat.heartFC_Cycleinfo import CycleDetail
from typing import List
# Import the new utility function
diff --git a/src/chat/heart_flow/observation/observation.py b/src/chat/heart_flow/observation/observation.py
index 6396cda06..272f43d99 100644
--- a/src/chat/heart_flow/observation/observation.py
+++ b/src/chat/heart_flow/observation/observation.py
@@ -1,7 +1,7 @@
# 定义了来自外部世界的信息
# 外部世界可以是某个聊天 不同平台的聊天 也可以是任意媒体
from datetime import datetime
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("observation")
diff --git a/src/chat/heart_flow/observation/structure_observation.py b/src/chat/heart_flow/observation/structure_observation.py
index cfe06e435..f8ba27ba5 100644
--- a/src/chat/heart_flow/observation/structure_observation.py
+++ b/src/chat/heart_flow/observation/structure_observation.py
@@ -1,5 +1,5 @@
from datetime import datetime
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
# Import the new utility function
diff --git a/src/chat/heart_flow/observation/working_observation.py b/src/chat/heart_flow/observation/working_observation.py
index 8cb4a6d3a..ac6f7fb75 100644
--- a/src/chat/heart_flow/observation/working_observation.py
+++ b/src/chat/heart_flow/observation/working_observation.py
@@ -1,7 +1,7 @@
# 定义了来自外部世界的信息
# 外部世界可以是某个聊天 不同平台的聊天 也可以是任意媒体
from datetime import datetime
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.focus_chat.working_memory.working_memory import WorkingMemory
from src.chat.focus_chat.working_memory.memory_item import MemoryItem
from typing import List
diff --git a/src/chat/heart_flow/sub_heartflow.py b/src/chat/heart_flow/sub_heartflow.py
index d94f94f75..1d745384b 100644
--- a/src/chat/heart_flow/sub_heartflow.py
+++ b/src/chat/heart_flow/sub_heartflow.py
@@ -4,7 +4,7 @@ import asyncio
import time
from typing import Optional, List, Dict, Tuple
import traceback
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.message_receive.message import MessageRecv
from src.chat.message_receive.chat_stream import chat_manager
from src.chat.focus_chat.heartFC_chat import HeartFChatting
diff --git a/src/chat/heart_flow/subheartflow_manager.py b/src/chat/heart_flow/subheartflow_manager.py
index 992672976..32deed530 100644
--- a/src/chat/heart_flow/subheartflow_manager.py
+++ b/src/chat/heart_flow/subheartflow_manager.py
@@ -1,7 +1,7 @@
import asyncio
import time
from typing import Dict, Any, Optional, List
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.message_receive.chat_stream import chat_manager
from src.chat.heart_flow.sub_heartflow import SubHeartflow, ChatState
diff --git a/src/chat/heart_flow/utils_chat.py b/src/chat/heart_flow/utils_chat.py
index 22581e482..95af96be9 100644
--- a/src/chat/heart_flow/utils_chat.py
+++ b/src/chat/heart_flow/utils_chat.py
@@ -1,5 +1,5 @@
from typing import Optional, Tuple, Dict
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.message_receive.chat_stream import chat_manager
from src.person_info.person_info import person_info_manager, PersonInfoManager
diff --git a/src/chat/knowledge/global_logger.py b/src/chat/knowledge/global_logger.py
index eebc88d65..48d43bdbd 100644
--- a/src/chat/knowledge/global_logger.py
+++ b/src/chat/knowledge/global_logger.py
@@ -1,5 +1,5 @@
# Configure logger
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("lpmm")
diff --git a/src/chat/memory_system/Hippocampus.py b/src/chat/memory_system/Hippocampus.py
index debb0e0ca..11131e013 100644
--- a/src/chat/memory_system/Hippocampus.py
+++ b/src/chat/memory_system/Hippocampus.py
@@ -12,7 +12,7 @@ import networkx as nx
import numpy as np
from collections import Counter
from ...llm_models.utils_model import LLMRequest
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.memory_system.sample_distribution import MemoryBuildScheduler # 分布生成器
from ..utils.chat_message_builder import (
get_raw_msg_by_timestamp,
@@ -829,7 +829,7 @@ class EntorhinalCortex:
)
if messages:
time_diff = (datetime.datetime.now().timestamp() - timestamp) / 3600
- logger.success(f"成功抽取 {time_diff:.1f} 小时前的消息样本,共{len(messages)}条")
+ logger.info(f"成功抽取 {time_diff:.1f} 小时前的消息样本,共{len(messages)}条")
chat_samples.append(messages)
else:
logger.debug(f"时间戳 {timestamp} 的消息无需记忆")
@@ -1046,8 +1046,8 @@ class EntorhinalCortex:
GraphEdges.delete().where((GraphEdges.source == source) & (GraphEdges.target == target)).execute()
end_time = time.time()
- logger.success(f"[同步] 总耗时: {end_time - start_time:.2f}秒")
- logger.success(f"[同步] 同步了 {len(memory_nodes)} 个节点和 {len(memory_edges)} 条边")
+ logger.info(f"[同步] 总耗时: {end_time - start_time:.2f}秒")
+ logger.info(f"[同步] 同步了 {len(memory_nodes)} 个节点和 {len(memory_edges)} 条边")
async def resync_memory_to_db(self):
"""清空数据库并重新同步所有记忆数据"""
@@ -1133,8 +1133,8 @@ class EntorhinalCortex:
logger.info(f"[数据库] 写入 {len(edges_data)} 条边耗时: {edge_end - edge_start:.2f}秒")
end_time = time.time()
- logger.success(f"[数据库] 重新同步完成,总耗时: {end_time - start_time:.2f}秒")
- logger.success(f"[数据库] 同步了 {len(nodes_data)} 个节点和 {len(edges_data)} 条边")
+ logger.info(f"[数据库] 重新同步完成,总耗时: {end_time - start_time:.2f}秒")
+ logger.info(f"[数据库] 同步了 {len(nodes_data)} 个节点和 {len(edges_data)} 条边")
def sync_memory_from_db(self):
"""从数据库同步数据到内存中的图结构"""
@@ -1209,7 +1209,7 @@ class EntorhinalCortex:
)
if need_update:
- logger.success("[数据库] 已为缺失的时间字段进行补充")
+ logger.info("[数据库] 已为缺失的时间字段进行补充")
# 负责整合,遗忘,合并记忆
@@ -1387,7 +1387,7 @@ class ParahippocampalGyrus:
logger.debug(f"进度: [{bar}] {progress:.1f}% ({i}/{len(memory_samples)})")
if all_added_nodes:
- logger.success(f"更新记忆: {', '.join(all_added_nodes)}")
+ logger.info(f"更新记忆: {', '.join(all_added_nodes)}")
if all_added_edges:
logger.debug(f"强化连接: {', '.join(all_added_edges)}")
if all_connected_nodes:
@@ -1396,7 +1396,7 @@ class ParahippocampalGyrus:
await self.hippocampus.entorhinal_cortex.sync_memory_to_db()
end_time = time.time()
- logger.success(f"---------------------记忆构建耗时: {end_time - start_time:.2f} 秒---------------------")
+ logger.info(f"---------------------记忆构建耗时: {end_time - start_time:.2f} 秒---------------------")
async def operation_forget_topic(self, percentage=0.005):
start_time = time.time()
@@ -1686,7 +1686,7 @@ class HippocampusManager:
node_count = len(memory_graph.nodes())
edge_count = len(memory_graph.edges())
- logger.success(f"""--------------------------------
+ logger.info(f"""--------------------------------
记忆系统参数配置:
构建间隔: {global_config.memory.memory_build_interval}秒|样本数: {global_config.memory.memory_build_sample_num},长度: {global_config.memory.memory_build_sample_length}|压缩率: {global_config.memory.memory_compress_rate}
记忆构建分布: {global_config.memory.memory_build_distribution}
diff --git a/src/chat/message_receive/bot.py b/src/chat/message_receive/bot.py
index 67b956b04..a8885f9bc 100644
--- a/src/chat/message_receive/bot.py
+++ b/src/chat/message_receive/bot.py
@@ -1,7 +1,7 @@
import traceback
from typing import Dict, Any
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.manager.mood_manager import mood_manager # 导入情绪管理器
from src.chat.message_receive.chat_stream import chat_manager
from src.chat.message_receive.message import MessageRecv
diff --git a/src/chat/message_receive/chat_stream.py b/src/chat/message_receive/chat_stream.py
index 0f60d4942..4a9966d9e 100644
--- a/src/chat/message_receive/chat_stream.py
+++ b/src/chat/message_receive/chat_stream.py
@@ -13,7 +13,7 @@ from maim_message import GroupInfo, UserInfo
if TYPE_CHECKING:
from .message import MessageRecv
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from rich.traceback import install
install(extra_lines=3)
@@ -135,7 +135,7 @@ class ChatManager:
"""异步初始化"""
try:
await self.load_all_streams()
- logger.success(f"聊天管理器已启动,已加载 {len(self.streams)} 个聊天流")
+ logger.info(f"聊天管理器已启动,已加载 {len(self.streams)} 个聊天流")
except Exception as e:
logger.error(f"聊天管理器启动失败: {str(e)}")
diff --git a/src/chat/message_receive/message.py b/src/chat/message_receive/message.py
index 92aff4c31..25ce81d7e 100644
--- a/src/chat/message_receive/message.py
+++ b/src/chat/message_receive/message.py
@@ -5,7 +5,7 @@ from typing import Optional, Any, TYPE_CHECKING
import urllib3
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
if TYPE_CHECKING:
from .chat_stream import ChatStream
diff --git a/src/chat/message_receive/message_sender.py b/src/chat/message_receive/message_sender.py
index 364a5b6c2..77b013031 100644
--- a/src/chat/message_receive/message_sender.py
+++ b/src/chat/message_receive/message_sender.py
@@ -3,7 +3,7 @@ import asyncio
import time
from asyncio import Task
from typing import Union
-from src.common.message.api import global_api
+from src.common.message.api import get_global_api
# from ...common.database import db # 数据库依赖似乎不需要了,注释掉
from .message import MessageSending, MessageThinking, MessageSet
@@ -12,7 +12,7 @@ from .storage import MessageStorage
from ...config.config import global_config
from ..utils.utils import truncate_message, calculate_typing_time, count_messages_between
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from rich.traceback import install
install(extra_lines=3)
@@ -24,7 +24,7 @@ logger = get_logger("sender")
async def send_via_ws(message: MessageSending) -> None:
"""通过 WebSocket 发送消息"""
try:
- await global_api.send_message(message)
+ await get_global_api().send_message(message)
except Exception as e:
logger.error(f"WS发送失败: {e}")
raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e
@@ -50,7 +50,7 @@ async def send_message(
try:
await send_via_ws(message)
- logger.success(f"发送消息 '{message_preview}' 成功") # 调整日志格式
+ logger.info(f"发送消息 '{message_preview}' 成功") # 调整日志格式
except Exception as e:
logger.error(f"发送消息 '{message_preview}' 失败: {str(e)}")
diff --git a/src/chat/message_receive/storage.py b/src/chat/message_receive/storage.py
index 8c05a9ab0..ebaf32b26 100644
--- a/src/chat/message_receive/storage.py
+++ b/src/chat/message_receive/storage.py
@@ -5,9 +5,9 @@ from typing import Union
from .message import MessageSending, MessageRecv
from .chat_stream import ChatStream
from ...common.database.database_model import Messages, RecalledMessages # Import Peewee models
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
-logger = get_module_logger("message_storage")
+logger = get_logger("message_storage")
class MessageStorage:
diff --git a/src/chat/normal_chat/normal_chat.py b/src/chat/normal_chat/normal_chat.py
index 7d37f7ead..5fb969ae1 100644
--- a/src/chat/normal_chat/normal_chat.py
+++ b/src/chat/normal_chat/normal_chat.py
@@ -4,7 +4,7 @@ import traceback
from random import random
from typing import List, Optional # 导入 Optional
from maim_message import UserInfo, Seg
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.heart_flow.utils_chat import get_chat_type_and_target_info
from src.manager.mood_manager import mood_manager
from src.chat.message_receive.chat_stream import ChatStream, chat_manager
diff --git a/src/chat/normal_chat/normal_chat_action_modifier.py b/src/chat/normal_chat/normal_chat_action_modifier.py
index b13c1ee41..331d43615 100644
--- a/src/chat/normal_chat/normal_chat_action_modifier.py
+++ b/src/chat/normal_chat/normal_chat_action_modifier.py
@@ -1,5 +1,5 @@
from typing import List, Any, Dict
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.focus_chat.planners.action_manager import ActionManager
from src.chat.actions.base_action import ActionActivationType, ChatMode
from src.chat.utils.chat_message_builder import build_readable_messages, get_raw_msg_before_timestamp_with_chat
diff --git a/src/chat/normal_chat/normal_chat_expressor.py b/src/chat/normal_chat/normal_chat_expressor.py
index 0f423259f..6c9c1e3fe 100644
--- a/src/chat/normal_chat/normal_chat_expressor.py
+++ b/src/chat/normal_chat/normal_chat_expressor.py
@@ -12,7 +12,7 @@ from src.chat.message_receive.message import UserInfo
from src.chat.message_receive.chat_stream import ChatStream, chat_manager
from src.chat.message_receive.message_sender import message_manager
from src.config.config import global_config
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("normal_chat_expressor")
diff --git a/src/chat/normal_chat/normal_chat_generator.py b/src/chat/normal_chat/normal_chat_generator.py
index 65e60e963..0dbf38a98 100644
--- a/src/chat/normal_chat/normal_chat_generator.py
+++ b/src/chat/normal_chat/normal_chat_generator.py
@@ -5,7 +5,7 @@ from src.config.config import global_config
from src.chat.message_receive.message import MessageThinking
from src.chat.normal_chat.normal_prompt import prompt_builder
from src.chat.utils.timer_calculator import Timer
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.person_info.person_info import person_info_manager, PersonInfoManager
from src.chat.utils.utils import process_llm_response
diff --git a/src/chat/normal_chat/normal_chat_planner.py b/src/chat/normal_chat/normal_chat_planner.py
index eceb73d77..1c9395303 100644
--- a/src/chat/normal_chat/normal_chat_planner.py
+++ b/src/chat/normal_chat/normal_chat_planner.py
@@ -3,7 +3,7 @@ from typing import Dict, Any
from rich.traceback import install
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from src.individuality.individuality import individuality
from src.chat.focus_chat.planners.action_manager import ActionManager
diff --git a/src/chat/normal_chat/normal_prompt.py b/src/chat/normal_chat/normal_prompt.py
index 168b52da2..de016da38 100644
--- a/src/chat/normal_chat/normal_prompt.py
+++ b/src/chat/normal_chat/normal_prompt.py
@@ -1,5 +1,5 @@
from src.config.config import global_config
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.individuality.individuality import individuality
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
from src.chat.utils.chat_message_builder import build_readable_messages, get_raw_msg_before_timestamp_with_chat
diff --git a/src/chat/normal_chat/willing/willing_manager.py b/src/chat/normal_chat/willing/willing_manager.py
index 09f303a6e..201d3d85f 100644
--- a/src/chat/normal_chat/willing/willing_manager.py
+++ b/src/chat/normal_chat/willing/willing_manager.py
@@ -1,4 +1,4 @@
-from src.common.logger import LogConfig, WILLING_STYLE_CONFIG, LoguruLogger, get_module_logger
+from src.common.logger import get_logger
from dataclasses import dataclass
from src.config.config import global_config
from src.chat.message_receive.chat_stream import ChatStream, GroupInfo
@@ -33,12 +33,7 @@ set_willing 设置某聊天流意愿
示例: 在 `mode_aggressive.py` 中,类名应为 `AggressiveWillingManager`
"""
-willing_config = LogConfig(
- # 使用消息发送专用样式
- console_format=WILLING_STYLE_CONFIG["console_format"],
- file_format=WILLING_STYLE_CONFIG["file_format"],
-)
-logger = get_module_logger("willing", config=willing_config)
+logger = get_logger("willing")
@dataclass
@@ -93,7 +88,7 @@ class BaseWillingManager(ABC):
self.chat_reply_willing: Dict[str, float] = {} # 存储每个聊天流的回复意愿(chat_id)
self.ongoing_messages: Dict[str, WillingInfo] = {} # 当前正在进行的消息(message_id)
self.lock = asyncio.Lock()
- self.logger: LoguruLogger = logger
+ self.logger = logger
def setup(self, message: MessageRecv, chat: ChatStream, is_mentioned_bot: bool, interested_rate: float):
person_id = PersonInfoManager.get_person_id(chat.platform, chat.user_info.user_id)
diff --git a/src/chat/utils/logger_config.py b/src/chat/utils/logger_config.py
deleted file mode 100644
index 570ce41cd..000000000
--- a/src/chat/utils/logger_config.py
+++ /dev/null
@@ -1,88 +0,0 @@
-import sys
-import loguru
-from enum import Enum
-
-
-class LogClassification(Enum):
- BASE = "base"
- MEMORY = "memory"
- EMOJI = "emoji"
- CHAT = "chat"
- PBUILDER = "promptbuilder"
-
-
-class LogModule:
- logger = loguru.logger.opt()
-
- def __init__(self):
- pass
-
- def setup_logger(self, log_type: LogClassification):
- """配置日志格式
-
- Args:
- log_type: 日志类型,可选值:BASE(基础日志)、MEMORY(记忆系统日志)、EMOJI(表情包系统日志)
- """
- # 移除默认日志处理器
- self.logger.remove()
-
- # 基础日志格式
- base_format = (
- "{time:HH:mm:ss} | {level: <8} | "
- " d{name}:{function}:{line} - {message}"
- )
-
- chat_format = (
- "{time:HH:mm:ss} | {level: <8} | "
- "{name}:{function}:{line} - {message}"
- )
-
- # 记忆系统日志格式
- memory_format = (
- "{time:HH:mm} | {level: <8} | "
- "海马体 | {message}"
- )
-
- # 表情包系统日志格式
- emoji_format = (
- "{time:HH:mm} | {level: <8} | 表情包 | "
- "{function}:{line} - {message}"
- )
-
- promptbuilder_format = (
- "{time:HH:mm} | {level: <8} | Prompt | "
- "{function}:{line} - {message}"
- )
-
- # 根据日志类型选择日志格式和输出
- if log_type == LogClassification.CHAT:
- self.logger.add(
- sys.stderr,
- format=chat_format,
- # level="INFO"
- )
- elif log_type == LogClassification.PBUILDER:
- self.logger.add(
- sys.stderr,
- format=promptbuilder_format,
- # level="INFO"
- )
- elif log_type == LogClassification.MEMORY:
- # 同时输出到控制台和文件
- self.logger.add(
- sys.stderr,
- format=memory_format,
- # level="INFO"
- )
- self.logger.add("logs/memory.log", format=memory_format, level="INFO", rotation="1 day", retention="7 days")
- elif log_type == LogClassification.EMOJI:
- self.logger.add(
- sys.stderr,
- format=emoji_format,
- # level="INFO"
- )
- self.logger.add("logs/emoji.log", format=emoji_format, level="INFO", rotation="1 day", retention="7 days")
- else: # BASE
- self.logger.add(sys.stderr, format=base_format, level="INFO")
-
- return self.logger
diff --git a/src/chat/utils/prompt_builder.py b/src/chat/utils/prompt_builder.py
index 5d7c6ac5a..cc9ee3e64 100644
--- a/src/chat/utils/prompt_builder.py
+++ b/src/chat/utils/prompt_builder.py
@@ -3,14 +3,14 @@ import re
from contextlib import asynccontextmanager
import asyncio
import contextvars
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
# import traceback
from rich.traceback import install
install(extra_lines=3)
-logger = get_module_logger("prompt_build")
+logger = get_logger("prompt_build")
class PromptContext:
diff --git a/src/chat/utils/statistic.py b/src/chat/utils/statistic.py
index a657ae85b..567ec24cc 100644
--- a/src/chat/utils/statistic.py
+++ b/src/chat/utils/statistic.py
@@ -3,14 +3,14 @@ from datetime import datetime, timedelta
from typing import Any, Dict, Tuple, List
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.manager.async_task_manager import AsyncTask
from ...common.database.database import db # This db is the Peewee database instance
from ...common.database.database_model import OnlineTime, LLMUsage, Messages # Import the Peewee model
from src.manager.local_store_manager import local_storage
-logger = get_module_logger("maibot_statistic")
+logger = get_logger("maibot_statistic")
# 统计数据的键
TOTAL_REQ_CNT = "total_requests"
diff --git a/src/chat/utils/typo_generator.py b/src/chat/utils/typo_generator.py
index 304a2abe5..24d65057c 100644
--- a/src/chat/utils/typo_generator.py
+++ b/src/chat/utils/typo_generator.py
@@ -13,9 +13,9 @@ from pathlib import Path
import jieba
from pypinyin import Style, pinyin
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
-logger = get_module_logger("typo_gen")
+logger = get_logger("typo_gen")
class ChineseTypoGenerator:
diff --git a/src/chat/utils/utils.py b/src/chat/utils/utils.py
index 26be121e0..4f7280659 100644
--- a/src/chat/utils/utils.py
+++ b/src/chat/utils/utils.py
@@ -7,7 +7,7 @@ import jieba
import numpy as np
from maim_message import UserInfo
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.manager.mood_manager import mood_manager
from ..message_receive.message import MessageRecv
from src.llm_models.utils_model import LLMRequest
@@ -15,7 +15,7 @@ from .typo_generator import ChineseTypoGenerator
from ...config.config import global_config
from ...common.message_repository import find_messages, count_messages
-logger = get_module_logger("chat_utils")
+logger = get_logger("chat_utils")
def is_english_letter(char: str) -> bool:
diff --git a/src/chat/utils/utils_image.py b/src/chat/utils/utils_image.py
index 0fd9a91ca..ded80c052 100644
--- a/src/chat/utils/utils_image.py
+++ b/src/chat/utils/utils_image.py
@@ -13,7 +13,7 @@ from src.common.database.database_model import Images, ImageDescriptions
from src.config.config import global_config
from src.llm_models.utils_model import LLMRequest
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from rich.traceback import install
install(extra_lines=3)
diff --git a/src/common/database/database_model.py b/src/common/database/database_model.py
index b9d6a6e15..bbca0753d 100644
--- a/src/common/database/database_model.py
+++ b/src/common/database/database_model.py
@@ -1,7 +1,7 @@
from peewee import Model, DoubleField, IntegerField, BooleanField, TextField, FloatField, DateTimeField
from .database import db
import datetime
-from ..logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("database_model")
# 请在此处定义您的数据库实例。
diff --git a/src/common/log_decorators.py b/src/common/log_decorators.py
deleted file mode 100644
index 414ba923b..000000000
--- a/src/common/log_decorators.py
+++ /dev/null
@@ -1,110 +0,0 @@
-import functools
-import inspect
-from typing import Callable, Any
-from .logger import logger, add_custom_style_handler
-from rich.traceback import install
-
-install(extra_lines=3)
-
-
-def use_log_style(
- style_name: str,
- console_format: str,
- console_level: str = "INFO",
- # file_format: Optional[str] = None, # 暂未支持文件输出
- # file_level: str = "DEBUG",
-) -> Callable:
- """装饰器:为函数内的日志启用特定的自定义样式。
-
- Args:
- style_name (str): 自定义样式的唯一名称。
- console_format (str): 控制台输出的格式字符串。
- console_level (str, optional): 控制台日志级别. Defaults to "INFO".
- # file_format (Optional[str], optional): 文件输出格式 (暂未支持). Defaults to None.
- # file_level (str, optional): 文件日志级别 (暂未支持). Defaults to "DEBUG".
-
- Returns:
- Callable: 返回装饰器本身。
- """
-
- def decorator(func: Callable) -> Callable:
- # 获取被装饰函数所在的模块名
- module = inspect.getmodule(func)
- if module is None:
- # 如果无法获取模块(例如,在交互式解释器中定义函数),则使用默认名称
- module_name = "unknown_module"
- logger.warning(f"无法确定函数 {func.__name__} 的模块,将使用 '{module_name}'")
- else:
- module_name = module.__name__
-
- # 在函数首次被调用(或模块加载时)确保自定义处理器已添加
- # 注意:这会在模块加载时执行,而不是每次函数调用时
- # print(f"Setting up custom style '{style_name}' for module '{module_name}' in decorator definition")
- add_custom_style_handler(
- module_name=module_name,
- style_name=style_name,
- console_format=console_format,
- console_level=console_level,
- # file_format=file_format,
- # file_level=file_level,
- )
-
- @functools.wraps(func)
- def wrapper(*args: Any, **kwargs: Any) -> Any:
- # 创建绑定了模块名和自定义样式标记的 logger 实例
- custom_logger = logger.bind(module=module_name, custom_style=style_name)
- # print(f"Executing {func.__name__} with custom logger for style '{style_name}'")
- # 将自定义 logger 作为第一个参数传递给原函数
- # 注意:这要求被装饰的函数第一个参数用于接收 logger
- try:
- return func(custom_logger, *args, **kwargs)
- except TypeError as e:
- # 捕获可能的类型错误,比如原函数不接受 logger 参数
- logger.error(
- f"调用 {func.__name__} 时出错:请确保该函数接受一个 logger 实例作为其第一个参数。错误:{e}"
- )
- # 可以选择重新抛出异常或返回特定值
- raise e
-
- return wrapper
-
- return decorator
-
-
-# --- 示例用法 (可以在其他模块中这样使用) ---
-
-# # 假设这是你的模块 my_module.py
-# from src.common.log_decorators import use_log_style
-# from src.common.logger import get_module_logger, LoguruLogger
-
-# # 获取模块的标准 logger
-# standard_logger = get_module_logger(__name__)
-
-# # 定义一个自定义样式
-# MY_SPECIAL_STYLE = "special"
-# MY_SPECIAL_FORMAT = " SPECIAL [{time:HH:mm:ss}] | {message}"
-
-# @use_log_style(style_name=MY_SPECIAL_STYLE, console_format=MY_SPECIAL_FORMAT)
-# def my_function_with_special_logs(custom_logger: LoguruLogger, x: int, y: int):
-# standard_logger.info("这是一条使用标准格式的日志")
-# custom_logger.info(f"开始执行特殊操作,参数: x={x}, y={y}")
-# result = x + y
-# custom_logger.success(f"特殊操作完成,结果: {result}")
-# standard_logger.info("标准格式日志:函数即将结束")
-# return result
-
-# @use_log_style(style_name="another_style", console_format="任务: {message}")
-# def another_task(task_logger: LoguruLogger, task_name: str):
-# standard_logger.debug("准备执行另一个任务")
-# task_logger.info(f"正在处理任务 '{task_name}'")
-# # ... 执行任务 ...
-# task_logger.warning("任务处理中遇到一个警告")
-# standard_logger.info("另一个任务的标准日志")
-
-# if __name__ == "__main__":
-# print("\n--- 调用 my_function_with_special_logs ---")
-# my_function_with_special_logs(10, 5)
-# print("\n--- 调用 another_task ---")
-# another_task("数据清理")
-# print("\n--- 单独使用标准 logger ---")
-# standard_logger.info("这是一条完全独立的标准日志")
diff --git a/src/common/logger.py b/src/common/logger.py
index 614ccdb1d..b7993f7a8 100644
--- a/src/common/logger.py
+++ b/src/common/logger.py
@@ -1,1227 +1,16 @@
-from loguru import logger
-from typing import Optional, Union, List, Tuple
-import sys
-import os
-from types import ModuleType
-from pathlib import Path
-from dotenv import load_dotenv
+from typing import Callable, Optional
+import structlog
-# 加载 .env 文件
-env_path = Path(os.getcwd()) / ".env"
-load_dotenv(dotenv_path=env_path)
+raw_logger = structlog.get_logger()
-# 保存原生处理器ID
-default_handler_id = None
-for handler_id in logger._core.handlers:
- default_handler_id = handler_id
- break
+binds: dict[str, Callable] = {}
-# 移除默认处理器
-if default_handler_id is not None:
- logger.remove(default_handler_id)
-# 类型别名
-LoguruLogger = logger.__class__
-
-# 全局注册表:记录模块与处理器ID的映射
-_handler_registry: dict[str, List[int]] = {}
-_custom_style_handlers: dict[Tuple[str, str], List[int]] = {} # 记录自定义样式处理器ID
-
-# 获取日志存储根地址
-ROOT_PATH = os.getcwd()
-LOG_ROOT = str(ROOT_PATH) + "/" + "logs"
-
-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:
- # 默认全局配置
- DEFAULT_CONFIG = {
- # 日志级别配置
- "console_level": "INFO",
- "file_level": "DEBUG",
- # 格式配置
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | {extra[module]: <12} | {message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | {message}",
- "log_dir": LOG_ROOT,
- "rotation": "00:00",
- "retention": "3 days",
- "compression": "zip",
- }
-else:
- DEFAULT_CONFIG = {
- # 日志级别配置
- "console_level": "INFO",
- "file_level": "DEBUG",
- # 格式配置
- "console_format": "{time:HH:mm:ss} | {extra[module]} | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | {message}",
- "log_dir": LOG_ROOT,
- "rotation": "00:00",
- "retention": "3 days",
- "compression": "zip",
- }
-
-
-MAIN_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "主程序 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 主程序 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 主程序 | {message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 主程序 | {message}",
- },
-}
-
-# pfc配置
-PFC_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "PFC | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | PFC | {message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC | {message}",
- },
-}
-
-# MOOD
-MOOD_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "心情 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 心情 | {message} ",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}",
- },
-}
-# tool use
-TOOL_USE_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "工具使用 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 工具使用 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}",
- },
-}
-
-
-# relationship
-RELATION_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "关系 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 关系 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系 | {message}",
- },
-}
-
-# config
-CONFIG_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "配置 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 配置 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 配置 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 配置 | {message}",
- },
-}
-
-SENDER_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "消息发送 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息发送 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 消息发送 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息发送 | {message}",
- },
-}
-
-HEARTFLOW_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "麦麦大脑袋 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦大脑袋 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 麦麦大脑袋 | {message}"
- ), # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦大脑袋 | {message}",
- },
-}
-
-SCHEDULE_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "在干嘛 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 在干嘛 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 在干嘛 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 在干嘛 | {message}",
- },
-}
-
-NORMAL_CHAT_RESPONSE_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "普通水群回复 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 普通水群回复 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 普通水群回复 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 普通水群回复 | {message}",
- },
-}
-
-EXPRESS_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "麦麦表达 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦表达 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 麦麦表达 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦表达 | {message}",
- },
-}
-
-# Topic日志样式配置
-TOPIC_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "话题 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 话题 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 主题 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 话题 | {message}",
- },
-}
-
-# Topic日志样式配置
-CHAT_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "见闻 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 见闻 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 见闻 | {message}", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 见闻 | {message}",
- },
-}
-
-# Topic日志样式配置
-NORMAL_CHAT_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "普通水群 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 普通水群 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 普通水群 | {message}", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 普通水群 | {message}",
- },
-}
-
-# Topic日志样式配置
-FOCUS_CHAT_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "专注水群 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 专注水群 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 专注水群 | {message}", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 专注水群 | {message}",
- },
-}
-
-
-REMOTE_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "远程 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 远程 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 远程| {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 远程 | {message}",
- },
-}
-
-SUB_HEARTFLOW_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "麦麦水群 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 麦麦水群 | {message}", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群 | {message}",
- },
-}
-
-INTEREST_CHAT_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "兴趣 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 兴趣 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 兴趣 | {message}", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 兴趣 | {message}",
- },
-}
-
-
-SUB_HEARTFLOW_MIND_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "麦麦小脑袋 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 麦麦小脑袋 | {message}", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦小脑袋 | {message}",
- },
-}
-
-SUBHEARTFLOW_MANAGER_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "麦麦水群[管理] | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群[管理] | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 麦麦水群[管理] | {message}", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦水群[管理] | {message}",
- },
-}
-
-BASE_TOOL_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "工具使用 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 工具使用 | {message}"
- ), # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}",
- },
-}
-
-CHAT_STREAM_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "聊天流 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天流 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 聊天流 | {message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天流 | {message}",
- },
-}
-
-CHAT_MESSAGE_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "聊天消息 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天消息 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 聊天消息 | {message}"
- ), # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天消息 | {message}",
- },
-}
-
-PERSON_INFO_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "人物信息 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 人物信息 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 人物信息 | {message}"
- ), # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 人物信息 | {message}",
- },
-}
-
-BACKGROUND_TASKS_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "后台任务 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 后台任务 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 后台任务 | {message}"
- ), # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 后台任务 | {message}",
- },
-}
-
-WILLING_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "意愿 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 意愿 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 意愿 | {message} ", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 意愿 | {message}",
- },
-}
-
-PFC_ACTION_PLANNER_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "PFC私聊规划 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC私聊规划 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | PFC私聊规划 | {message} ", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | PFC私聊规划 | {message}",
- },
-}
-
-# EMOJI,橙色,全着色
-EMOJI_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "表情包 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 表情包 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 表情包 | {message} ", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 表情包 | {message}",
- },
-}
-
-STATISTIC_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "麦麦统计 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦统计 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 麦麦统计 | {message} ", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 麦麦统计 | {message}",
- },
-}
-
-
-# 海马体日志样式配置
-MEMORY_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "海马体 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 海马体 | {message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 海马体 | {message}",
- },
-}
-
-
-# LPMM配置
-LPMM_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "LPMM | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | LPMM | {message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM | {message}",
- },
-}
-
-# OBSERVATION_STYLE_CONFIG = {
-# "advanced": {
-# "console_format": (
-# "{time:YYYY-MM-DD HH:mm:ss} | "
-# "{level: <8} | "
-# "聊天观察 | "
-# "{message}"
-# ),
-# "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天观察 | {message}",
-# },
-# "simple": {
-# "console_format": (
-# "{time:HH:mm:ss} | 聊天观察 | {message}"
-# ), # noqa: E501
-# "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天观察 | {message}",
-# },
-# }
-
-CHAT_IMAGE_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "聊天图片 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天图片 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 聊天图片 | {message}"
- ), # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 聊天图片 | {message}",
- },
-}
-
-# HFC log
-HFC_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "专注聊天 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 专注聊天 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 专注聊天 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 专注聊天 | {message}",
- },
-}
-
-OBSERVATION_STYLE_CONFIG = {
- "advanced": {
- "console_format": "{time:HH:mm:ss} | 观察 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 观察 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 观察 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 观察 | {message}",
- },
-}
-
-PROCESSOR_STYLE_CONFIG = {
- "advanced": {
- "console_format": "{time:HH:mm:ss} | 处理器 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 处理器 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 处理器 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 处理器 | {message}",
- },
-}
-
-PLANNER_STYLE_CONFIG = {
- "advanced": {
- "console_format": "{time:HH:mm:ss} | 规划器 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 规划器 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 规划器 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 规划器 | {message}",
- },
-}
-
-ACTION_TAKEN_STYLE_CONFIG = {
- "advanced": {
- "console_format": "{time:HH:mm:ss} | 动作 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 动作 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 动作 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 动作 | {message}",
- },
-}
-
-
-CONFIRM_STYLE_CONFIG = {
- "console_format": "{message}", # noqa: E501
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | EULA与PRIVACY确认 | {message}",
-}
-
-# 天依蓝配置
-TIANYI_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "天依 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 天依 | {message}",
- },
- "simple": {
- "console_format": (
- "{time:HH:mm:ss} | 天依 | {message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 天依 | {message}",
- },
-}
-
-# 模型日志样式配置
-MODEL_UTILS_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "模型 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 模型 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 模型 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 模型 | {message}",
- },
-}
-
-MESSAGE_BUFFER_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "消息缓存 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息缓存 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 消息缓存 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息缓存 | {message}",
- },
-}
-
-PROMPT_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "提示词构建 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 提示词构建 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 提示词构建 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 提示词构建 | {message}",
- },
-}
-
-CHANGE_MOOD_TOOL_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "心情工具 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情工具 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 心情工具 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情工具 | {message}",
- },
-}
-
-CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "关系工具 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系工具 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 关系工具 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 关系工具 | {message}",
- },
-}
-
-GET_KNOWLEDGE_TOOL_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "获取知识 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取知识 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 获取知识 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取知识 | {message}",
- },
-}
-
-GET_TIME_DATE_TOOL_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "获取时间日期 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取时间日期 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 获取时间日期 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 获取时间日期 | {message}",
- },
-}
-
-LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "LPMM获取知识 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM获取知识 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | LPMM获取知识 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | LPMM获取知识 | {message}",
- },
-}
-
-INIT_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "初始化 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 初始化 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 初始化 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 初始化 | {message}",
- },
-}
-
-API_SERVER_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "API服务 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | API服务 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | API服务 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | API服务 | {message}",
- },
-}
-
-ACTION_MANAGER_STYLE_CONFIG = {
- "advanced": {
- "console_format": "{time:HH:mm:ss} | 动作选择 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 动作选择 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 动作选择 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 动作选择 | {message}",
- },
-}
-
-# maim_message 消息服务样式配置
-MAIM_MESSAGE_STYLE_CONFIG = {
- "advanced": {
- "console_format": (
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "消息服务 | "
- "{message}"
- ),
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息服务 | {message}",
- },
- "simple": {
- "console_format": "{time:HH:mm:ss} | 消息服务 | {message}",
- "file_format": "{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 消息服务 | {message}",
- },
-}
-
-
-# 根据SIMPLE_OUTPUT选择配置
-MAIN_STYLE_CONFIG = MAIN_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MAIN_STYLE_CONFIG["advanced"]
-EMOJI_STYLE_CONFIG = EMOJI_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else EMOJI_STYLE_CONFIG["advanced"]
-PFC_ACTION_PLANNER_STYLE_CONFIG = (
- PFC_ACTION_PLANNER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PFC_ACTION_PLANNER_STYLE_CONFIG["advanced"]
-)
-ACTION_MANAGER_STYLE_CONFIG = (
- ACTION_MANAGER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else ACTION_MANAGER_STYLE_CONFIG["advanced"]
-)
-REMOTE_STYLE_CONFIG = REMOTE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else REMOTE_STYLE_CONFIG["advanced"]
-BASE_TOOL_STYLE_CONFIG = BASE_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else BASE_TOOL_STYLE_CONFIG["advanced"]
-PERSON_INFO_STYLE_CONFIG = PERSON_INFO_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PERSON_INFO_STYLE_CONFIG["advanced"]
-SUBHEARTFLOW_MANAGER_STYLE_CONFIG = (
- SUBHEARTFLOW_MANAGER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUBHEARTFLOW_MANAGER_STYLE_CONFIG["advanced"]
-)
-BACKGROUND_TASKS_STYLE_CONFIG = (
- BACKGROUND_TASKS_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else BACKGROUND_TASKS_STYLE_CONFIG["advanced"]
-)
-MEMORY_STYLE_CONFIG = MEMORY_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MEMORY_STYLE_CONFIG["advanced"]
-CHAT_STREAM_STYLE_CONFIG = CHAT_STREAM_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_STREAM_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"]
-NORMAL_CHAT_RESPONSE_STYLE_CONFIG = (
- NORMAL_CHAT_RESPONSE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else NORMAL_CHAT_RESPONSE_STYLE_CONFIG["advanced"]
-)
-CHAT_STYLE_CONFIG = CHAT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_STYLE_CONFIG["advanced"]
-MOOD_STYLE_CONFIG = MOOD_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MOOD_STYLE_CONFIG["advanced"]
-RELATION_STYLE_CONFIG = RELATION_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else RELATION_STYLE_CONFIG["advanced"]
-SCHEDULE_STYLE_CONFIG = SCHEDULE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SCHEDULE_STYLE_CONFIG["advanced"]
-HEARTFLOW_STYLE_CONFIG = HEARTFLOW_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else HEARTFLOW_STYLE_CONFIG["advanced"]
-SUB_HEARTFLOW_STYLE_CONFIG = (
- SUB_HEARTFLOW_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUB_HEARTFLOW_STYLE_CONFIG["advanced"]
-) # noqa: E501
-SUB_HEARTFLOW_MIND_STYLE_CONFIG = (
- SUB_HEARTFLOW_MIND_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else SUB_HEARTFLOW_MIND_STYLE_CONFIG["advanced"]
-)
-WILLING_STYLE_CONFIG = WILLING_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else WILLING_STYLE_CONFIG["advanced"]
-STATISTIC_STYLE_CONFIG = STATISTIC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else STATISTIC_STYLE_CONFIG["advanced"]
-CONFIG_STYLE_CONFIG = CONFIG_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CONFIG_STYLE_CONFIG["advanced"]
-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"]
-HFC_STYLE_CONFIG = HFC_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else HFC_STYLE_CONFIG["advanced"]
-ACTION_TAKEN_STYLE_CONFIG = (
- ACTION_TAKEN_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else ACTION_TAKEN_STYLE_CONFIG["advanced"]
-)
-OBSERVATION_STYLE_CONFIG = OBSERVATION_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else OBSERVATION_STYLE_CONFIG["advanced"]
-PLANNER_STYLE_CONFIG = PLANNER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PLANNER_STYLE_CONFIG["advanced"]
-PROCESSOR_STYLE_CONFIG = PROCESSOR_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PROCESSOR_STYLE_CONFIG["advanced"]
-TIANYI_STYLE_CONFIG = TIANYI_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else TIANYI_STYLE_CONFIG["advanced"]
-MODEL_UTILS_STYLE_CONFIG = MODEL_UTILS_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MODEL_UTILS_STYLE_CONFIG["advanced"]
-PROMPT_STYLE_CONFIG = PROMPT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else PROMPT_STYLE_CONFIG["advanced"]
-CHANGE_MOOD_TOOL_STYLE_CONFIG = (
- CHANGE_MOOD_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHANGE_MOOD_TOOL_STYLE_CONFIG["advanced"]
-)
-CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG = (
- CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG["simple"]
- if SIMPLE_OUTPUT
- else CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG["advanced"]
-)
-GET_KNOWLEDGE_TOOL_STYLE_CONFIG = (
- GET_KNOWLEDGE_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else GET_KNOWLEDGE_TOOL_STYLE_CONFIG["advanced"]
-)
-GET_TIME_DATE_TOOL_STYLE_CONFIG = (
- GET_TIME_DATE_TOOL_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else GET_TIME_DATE_TOOL_STYLE_CONFIG["advanced"]
-)
-LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG = (
- LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG["simple"]
- if SIMPLE_OUTPUT
- else LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG["advanced"]
-)
-# OBSERVATION_STYLE_CONFIG = OBSERVATION_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else OBSERVATION_STYLE_CONFIG["advanced"]
-MESSAGE_BUFFER_STYLE_CONFIG = (
- MESSAGE_BUFFER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MESSAGE_BUFFER_STYLE_CONFIG["advanced"]
-)
-CHAT_MESSAGE_STYLE_CONFIG = (
- CHAT_MESSAGE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_MESSAGE_STYLE_CONFIG["advanced"]
-)
-CHAT_IMAGE_STYLE_CONFIG = CHAT_IMAGE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else CHAT_IMAGE_STYLE_CONFIG["advanced"]
-INIT_STYLE_CONFIG = INIT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else INIT_STYLE_CONFIG["advanced"]
-API_SERVER_STYLE_CONFIG = API_SERVER_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else API_SERVER_STYLE_CONFIG["advanced"]
-MAIM_MESSAGE_STYLE_CONFIG = (
- MAIM_MESSAGE_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else MAIM_MESSAGE_STYLE_CONFIG["advanced"]
-)
-INTEREST_CHAT_STYLE_CONFIG = (
- INTEREST_CHAT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else INTEREST_CHAT_STYLE_CONFIG["advanced"]
-)
-NORMAL_CHAT_STYLE_CONFIG = NORMAL_CHAT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else NORMAL_CHAT_STYLE_CONFIG["advanced"]
-FOCUS_CHAT_STYLE_CONFIG = FOCUS_CHAT_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else FOCUS_CHAT_STYLE_CONFIG["advanced"]
-EXPRESS_STYLE_CONFIG = EXPRESS_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else EXPRESS_STYLE_CONFIG["advanced"]
-
-
-def is_registered_module(record: dict) -> bool:
- """检查是否为已注册的模块"""
- return record["extra"].get("module") in _handler_registry
-
-
-def is_unregistered_module(record: dict) -> bool:
- """检查是否为未注册的模块"""
- return not is_registered_module(record)
-
-
-def log_patcher(record: dict) -> None:
- """自动填充未设置模块名的日志记录,保留原生模块名称"""
- if "module" not in record["extra"]:
- # 尝试从name中提取模块名
- module_name = record.get("name", "")
- if module_name == "":
- module_name = "root"
- record["extra"]["module"] = module_name
-
-
-# 应用全局修补器
-logger.configure(patcher=log_patcher)
-
-
-class LogConfig:
- """日志配置类"""
-
- def __init__(self, **kwargs):
- self.config = DEFAULT_CONFIG.copy()
- self.config.update(kwargs)
-
- def to_dict(self) -> dict:
- return self.config.copy()
-
- def update(self, **kwargs):
- self.config.update(kwargs)
-
-
-def get_module_logger(
- module: Union[str, ModuleType],
- *,
- console_level: Optional[str] = None,
- file_level: Optional[str] = None,
- extra_handlers: Optional[List[dict]] = None,
- config: Optional[LogConfig] = None,
-) -> LoguruLogger:
- module_name = module if isinstance(module, str) else module.__name__
- current_config = config.config if config else DEFAULT_CONFIG
-
- # 清理旧处理器
- if module_name in _handler_registry:
- for handler_id in _handler_registry[module_name]:
- logger.remove(handler_id)
- del _handler_registry[module_name]
-
- handler_ids = []
-
- # 控制台处理器
- console_id = logger.add(
- 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 and "custom_style" not in record["extra"],
- enqueue=True,
- )
- handler_ids.append(console_id)
-
- # 文件处理器
- log_dir = Path(current_config["log_dir"])
- log_dir.mkdir(parents=True, exist_ok=True)
- log_file = log_dir / "{time:YYYY-MM-DD}.log"
- log_file.parent.mkdir(parents=True, exist_ok=True)
-
- file_id = logger.add(
- sink=str(log_file),
- level=os.getenv("FILE_LOG_LEVEL", file_level or current_config["file_level"]),
- format=current_config["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 "custom_style" not in record["extra"],
- enqueue=True,
- )
- handler_ids.append(file_id)
-
- # 额外处理器
- if extra_handlers:
- for handler in extra_handlers:
- handler_id = logger.add(**handler)
- handler_ids.append(handler_id)
-
- # 更新注册表
- _handler_registry[module_name] = handler_ids
-
- 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",
- # message_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:
- for handler_id in _handler_registry[module_name]:
- logger.remove(handler_id)
- del _handler_registry[module_name]
-
-
-# 添加全局默认处理器(只处理未注册模块的日志--->控制台)
-# print(os.getenv("DEFAULT_CONSOLE_LOG_LEVEL", "SUCCESS"))
-DEFAULT_GLOBAL_HANDLER = logger.add(
- sink=sys.stderr,
- level=os.getenv("DEFAULT_CONSOLE_LOG_LEVEL", "SUCCESS"),
- format=(
- "{time:YYYY-MM-DD HH:mm:ss} | "
- "{level: <8} | "
- "{name: <12} | "
- "{message}"
- ),
- filter=lambda record: is_unregistered_module(record), # 只处理未注册模块的日志,并过滤nonebot
- enqueue=True,
-)
-
-# 添加全局默认文件处理器(只处理未注册模块的日志--->logs文件夹)
-log_dir = Path(DEFAULT_CONFIG["log_dir"])
-log_dir.mkdir(parents=True, exist_ok=True)
-other_log_dir = log_dir / "other"
-other_log_dir.mkdir(parents=True, exist_ok=True)
-
-DEFAULT_FILE_HANDLER = logger.add(
- sink=str(other_log_dir / "{time:YYYY-MM-DD}.log"),
- level=os.getenv("DEFAULT_FILE_LOG_LEVEL", "DEBUG"),
- format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name: <15} | {message}",
- rotation=DEFAULT_CONFIG["rotation"],
- retention=DEFAULT_CONFIG["retention"],
- compression=DEFAULT_CONFIG["compression"],
- encoding="utf-8",
- filter=lambda record: is_unregistered_module(record), # 只处理未注册模块的日志,并过滤nonebot
- enqueue=True,
-)
+def get_logger(name: Optional[str]):
+ if name is None:
+ return raw_logger
+ logger = binds.get(name)
+ if logger is None:
+ binds[name] = logger = structlog.get_logger(name).bind(name=name)
+ return logger
diff --git a/src/common/logger_manager.py b/src/common/logger_manager.py
deleted file mode 100644
index be75b0018..000000000
--- a/src/common/logger_manager.py
+++ /dev/null
@@ -1,118 +0,0 @@
-from src.common.logger import get_module_logger, LogConfig
-from src.common.logger import (
- BACKGROUND_TASKS_STYLE_CONFIG,
- MAIN_STYLE_CONFIG,
- MEMORY_STYLE_CONFIG,
- PFC_STYLE_CONFIG,
- MOOD_STYLE_CONFIG,
- TOOL_USE_STYLE_CONFIG,
- RELATION_STYLE_CONFIG,
- CONFIG_STYLE_CONFIG,
- HEARTFLOW_STYLE_CONFIG,
- CHAT_STYLE_CONFIG,
- EMOJI_STYLE_CONFIG,
- SUB_HEARTFLOW_STYLE_CONFIG,
- SUB_HEARTFLOW_MIND_STYLE_CONFIG,
- SUBHEARTFLOW_MANAGER_STYLE_CONFIG,
- BASE_TOOL_STYLE_CONFIG,
- CHAT_STREAM_STYLE_CONFIG,
- PERSON_INFO_STYLE_CONFIG,
- WILLING_STYLE_CONFIG,
- PFC_ACTION_PLANNER_STYLE_CONFIG,
- STATISTIC_STYLE_CONFIG,
- NORMAL_CHAT_STYLE_CONFIG,
- FOCUS_CHAT_STYLE_CONFIG,
- LPMM_STYLE_CONFIG,
- HFC_STYLE_CONFIG,
- OBSERVATION_STYLE_CONFIG,
- PLANNER_STYLE_CONFIG,
- PROCESSOR_STYLE_CONFIG,
- ACTION_TAKEN_STYLE_CONFIG,
- TIANYI_STYLE_CONFIG,
- REMOTE_STYLE_CONFIG,
- TOPIC_STYLE_CONFIG,
- SENDER_STYLE_CONFIG,
- CONFIRM_STYLE_CONFIG,
- MODEL_UTILS_STYLE_CONFIG,
- PROMPT_STYLE_CONFIG,
- CHANGE_MOOD_TOOL_STYLE_CONFIG,
- CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG,
- GET_KNOWLEDGE_TOOL_STYLE_CONFIG,
- GET_TIME_DATE_TOOL_STYLE_CONFIG,
- LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG,
- MESSAGE_BUFFER_STYLE_CONFIG,
- CHAT_MESSAGE_STYLE_CONFIG,
- CHAT_IMAGE_STYLE_CONFIG,
- INIT_STYLE_CONFIG,
- INTEREST_CHAT_STYLE_CONFIG,
- API_SERVER_STYLE_CONFIG,
- NORMAL_CHAT_RESPONSE_STYLE_CONFIG,
- EXPRESS_STYLE_CONFIG,
- ACTION_MANAGER_STYLE_CONFIG,
-)
-
-# 可根据实际需要补充更多模块配置
-MODULE_LOGGER_CONFIGS = {
- "background_tasks": BACKGROUND_TASKS_STYLE_CONFIG, # 后台任务
- "main": MAIN_STYLE_CONFIG, # 主程序
- "memory": MEMORY_STYLE_CONFIG, # 海马体
- "pfc": PFC_STYLE_CONFIG, # PFC
- "mood": MOOD_STYLE_CONFIG, # 心情
- "tool_use": TOOL_USE_STYLE_CONFIG, # 工具使用
- "relation": RELATION_STYLE_CONFIG, # 关系
- "config": CONFIG_STYLE_CONFIG, # 配置
- "heartflow": HEARTFLOW_STYLE_CONFIG, # 麦麦大脑袋
- "normal_chat_response": NORMAL_CHAT_RESPONSE_STYLE_CONFIG, # 麦麦组织语言
- "chat": CHAT_STYLE_CONFIG, # 见闻
- "emoji": EMOJI_STYLE_CONFIG, # 表情包
- "sub_heartflow": SUB_HEARTFLOW_STYLE_CONFIG, # 麦麦水群
- "sub_heartflow_mind": SUB_HEARTFLOW_MIND_STYLE_CONFIG, # 麦麦小脑袋
- "subheartflow_manager": SUBHEARTFLOW_MANAGER_STYLE_CONFIG, # 麦麦水群[管理]
- "base_tool": BASE_TOOL_STYLE_CONFIG, # 工具使用
- "chat_stream": CHAT_STREAM_STYLE_CONFIG, # 聊天流
- "person_info": PERSON_INFO_STYLE_CONFIG, # 人物信息
- "willing": WILLING_STYLE_CONFIG, # 意愿
- "pfc_action_planner": PFC_ACTION_PLANNER_STYLE_CONFIG, # PFC私聊规划
- "statistic": STATISTIC_STYLE_CONFIG, # 麦麦统计
- "lpmm": LPMM_STYLE_CONFIG, # LPMM
- "hfc": HFC_STYLE_CONFIG, # HFC
- "observation": OBSERVATION_STYLE_CONFIG, # 聊天观察
- "planner": PLANNER_STYLE_CONFIG, # 规划器
- "processor": PROCESSOR_STYLE_CONFIG, # 处理器
- "action_taken": ACTION_TAKEN_STYLE_CONFIG, # 动作
- "tianyi": TIANYI_STYLE_CONFIG, # 天依
- "remote": REMOTE_STYLE_CONFIG, # 远程
- "topic": TOPIC_STYLE_CONFIG, # 话题
- "sender": SENDER_STYLE_CONFIG, # 消息发送
- "confirm": CONFIRM_STYLE_CONFIG, # EULA与PRIVACY确认
- "model_utils": MODEL_UTILS_STYLE_CONFIG, # 模型工具
- "prompt": PROMPT_STYLE_CONFIG, # 提示词
- "change_mood_tool": CHANGE_MOOD_TOOL_STYLE_CONFIG, # 改变心情工具
- "change_relationship": CHANGE_RELATIONSHIP_TOOL_STYLE_CONFIG, # 改变关系工具
- "get_knowledge_tool": GET_KNOWLEDGE_TOOL_STYLE_CONFIG, # 获取知识工具
- "get_time_date": GET_TIME_DATE_TOOL_STYLE_CONFIG, # 获取时间日期工具
- "lpm_get_knowledge_tool": LPMM_GET_KNOWLEDGE_TOOL_STYLE_CONFIG, # LPMM获取知识工具
- "message_buffer": MESSAGE_BUFFER_STYLE_CONFIG, # 消息缓冲
- "chat_message": CHAT_MESSAGE_STYLE_CONFIG, # 聊天消息
- "chat_image": CHAT_IMAGE_STYLE_CONFIG, # 聊天图片
- "init": INIT_STYLE_CONFIG, # 初始化
- "interest_chat": INTEREST_CHAT_STYLE_CONFIG, # 兴趣
- "api": API_SERVER_STYLE_CONFIG, # API服务器
- "normal_chat": NORMAL_CHAT_STYLE_CONFIG, # 一般水群
- "focus_chat": FOCUS_CHAT_STYLE_CONFIG, # 专注水群
- "expressor": EXPRESS_STYLE_CONFIG, # 麦麦表达
- "action_manager": ACTION_MANAGER_STYLE_CONFIG, # 动作选择
- # ...如有更多模块,继续添加...
-}
-
-
-def get_logger(module_name: str):
- style_config = MODULE_LOGGER_CONFIGS.get(module_name)
- if style_config:
- log_config = LogConfig(
- console_format=style_config["console_format"],
- file_format=style_config["file_format"],
- )
- return get_module_logger(module_name, config=log_config)
- # 若无特殊样式,使用默认
- return get_module_logger(module_name)
diff --git a/src/common/message/__init__.py b/src/common/message/__init__.py
index b5eed4d45..160456b0f 100644
--- a/src/common/message/__init__.py
+++ b/src/common/message/__init__.py
@@ -2,9 +2,9 @@
__version__ = "0.1.0"
-from .api import global_api
+from .api import get_global_api
__all__ = [
- "global_api",
+ "get_global_api",
]
diff --git a/src/common/message/api.py b/src/common/message/api.py
index 7f8ffe7f9..8863a9796 100644
--- a/src/common/message/api.py
+++ b/src/common/message/api.py
@@ -1,55 +1,59 @@
-from src.common.server import global_server
+from src.common.server import get_global_server
import os
import importlib.metadata
from maim_message import MessageServer
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.config.config import global_config
+global_api = None
-# 检查maim_message版本
-try:
- maim_message_version = importlib.metadata.version("maim_message")
- version_compatible = [int(x) for x in maim_message_version.split(".")] >= [0, 3, 3]
-except (importlib.metadata.PackageNotFoundError, ValueError):
- version_compatible = False
+def get_global_api() -> MessageServer:
+ """获取全局MessageServer实例"""
+ global global_api
+ if global_api is None:
+ # 检查maim_message版本
+ try:
+ maim_message_version = importlib.metadata.version("maim_message")
+ version_compatible = [int(x) for x in maim_message_version.split(".")] >= [0, 3, 3]
+ except (importlib.metadata.PackageNotFoundError, ValueError):
+ version_compatible = False
-# 读取配置项
-maim_message_config = global_config.maim_message
+ # 读取配置项
+ maim_message_config = global_config.maim_message
-# 设置基本参数
-kwargs = {
- "host": os.environ["HOST"],
- "port": int(os.environ["PORT"]),
- "app": global_server.get_app(),
-}
+ # 设置基本参数
+ kwargs = {
+ "host": os.environ["HOST"],
+ "port": int(os.environ["PORT"]),
+ "app": get_global_server().get_app(),
+ }
-# 只有在版本 >= 0.3.0 时才使用高级特性
-if version_compatible:
- # 添加自定义logger
- maim_message_logger = get_logger("maim_message")
- kwargs["custom_logger"] = maim_message_logger
+ # 只有在版本 >= 0.3.0 时才使用高级特性
+ if version_compatible:
+ # 添加自定义logger
+ maim_message_logger = get_logger("maim_message")
+ kwargs["custom_logger"] = maim_message_logger
- # 添加token认证
- if maim_message_config.auth_token:
- if len(maim_message_config.auth_token) > 0:
- kwargs["enable_token"] = True
+ # 添加token认证
+ if maim_message_config.auth_token:
+ if len(maim_message_config.auth_token) > 0:
+ kwargs["enable_token"] = True
- if maim_message_config.use_custom:
- # 添加WSS模式支持
- del kwargs["app"]
- kwargs["host"] = maim_message_config.host
- kwargs["port"] = maim_message_config.port
- kwargs["mode"] = maim_message_config.mode
- if maim_message_config.use_wss:
- if maim_message_config.cert_file:
- kwargs["ssl_certfile"] = maim_message_config.cert_file
- if maim_message_config.key_file:
- kwargs["ssl_keyfile"] = maim_message_config.key_file
- kwargs["enable_custom_uvicorn_logger"] = False
+ if maim_message_config.use_custom:
+ # 添加WSS模式支持
+ del kwargs["app"]
+ kwargs["host"] = maim_message_config.host
+ kwargs["port"] = maim_message_config.port
+ kwargs["mode"] = maim_message_config.mode
+ if maim_message_config.use_wss:
+ if maim_message_config.cert_file:
+ kwargs["ssl_certfile"] = maim_message_config.cert_file
+ if maim_message_config.key_file:
+ kwargs["ssl_keyfile"] = maim_message_config.key_file
+ kwargs["enable_custom_uvicorn_logger"] = False
-
-global_api = MessageServer(**kwargs)
-
-if version_compatible and maim_message_config.auth_token:
- for token in maim_message_config.auth_token:
- global_api.add_valid_token(token)
+ global_api = MessageServer(**kwargs)
+ if version_compatible and maim_message_config.auth_token:
+ for token in maim_message_config.auth_token:
+ global_api.add_valid_token(token)
+ return global_api
diff --git a/src/common/message_repository.py b/src/common/message_repository.py
index ee69b22b0..107ee1c5e 100644
--- a/src/common/message_repository.py
+++ b/src/common/message_repository.py
@@ -1,10 +1,10 @@
from src.common.database.database_model import Messages # 更改导入
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
import traceback
from typing import List, Any, Optional
from peewee import Model # 添加 Peewee Model 导入
-logger = get_module_logger(__name__)
+logger = get_logger(__name__)
def _model_to_dict(model_instance: Model) -> dict[str, Any]:
diff --git a/src/common/remote.py b/src/common/remote.py
index ff0d1e41c..197f8d3fa 100644
--- a/src/common/remote.py
+++ b/src/common/remote.py
@@ -3,8 +3,7 @@ import asyncio
import requests
import platform
-# from loguru import logger
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.config.config import global_config
from src.manager.async_task_manager import AsyncTask
from src.manager.local_store_manager import local_storage
diff --git a/src/common/server.py b/src/common/server.py
index 9f4a94592..efb217bde 100644
--- a/src/common/server.py
+++ b/src/common/server.py
@@ -90,4 +90,11 @@ class Server:
return self.app
-global_server = Server(host=os.environ["HOST"], port=int(os.environ["PORT"]))
+global_server = None
+
+def get_global_server() -> Server:
+ """获取全局服务器实例"""
+ global global_server
+ if global_server is None:
+ global_server = Server(host=os.environ["HOST"], port=int(os.environ["PORT"]))
+ return global_server
diff --git a/src/config/config.py b/src/config/config.py
index 46605c090..c30e8fe0f 100644
--- a/src/config/config.py
+++ b/src/config/config.py
@@ -8,7 +8,7 @@ from datetime import datetime
from tomlkit import TOMLDocument
from tomlkit.items import Table
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from rich.traceback import install
from src.config.config_base import ConfigBase
diff --git a/src/experimental/PFC/action_planner.py b/src/experimental/PFC/action_planner.py
index f4defaf7c..95c777235 100644
--- a/src/experimental/PFC/action_planner.py
+++ b/src/experimental/PFC/action_planner.py
@@ -1,6 +1,6 @@
import time
from typing import Tuple, Optional # 增加了 Optional
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.experimental.PFC.chat_observer import ChatObserver
diff --git a/src/experimental/PFC/chat_observer.py b/src/experimental/PFC/chat_observer.py
index 55914d800..6021ef73c 100644
--- a/src/experimental/PFC/chat_observer.py
+++ b/src/experimental/PFC/chat_observer.py
@@ -2,7 +2,7 @@ import time
import asyncio
import traceback
from typing import Optional, Dict, Any, List
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from maim_message import UserInfo
from src.config.config import global_config
from src.experimental.PFC.chat_states import (
@@ -15,7 +15,7 @@ from rich.traceback import install
install(extra_lines=3)
-logger = get_module_logger("chat_observer")
+logger = get_logger("chat_observer")
class ChatObserver:
diff --git a/src/experimental/PFC/conversation.py b/src/experimental/PFC/conversation.py
index e007c7601..f5044b67d 100644
--- a/src/experimental/PFC/conversation.py
+++ b/src/experimental/PFC/conversation.py
@@ -11,7 +11,7 @@ from src.chat.message_receive.message import Message
from .pfc_types import ConversationState
from .pfc import ChatObserver, GoalAnalyzer
from .message_sender import DirectMessageSender
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from .action_planner import ActionPlanner
from .observation_info import ObservationInfo
from .conversation_info import ConversationInfo # 确保导入 ConversationInfo
diff --git a/src/experimental/PFC/message_sender.py b/src/experimental/PFC/message_sender.py
index 4b193a41d..841ebe450 100644
--- a/src/experimental/PFC/message_sender.py
+++ b/src/experimental/PFC/message_sender.py
@@ -1,6 +1,6 @@
import time
from typing import Optional
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.chat.message_receive.chat_stream import ChatStream
from src.chat.message_receive.message import Message
from maim_message import UserInfo, Seg
@@ -13,7 +13,7 @@ from rich.traceback import install
install(extra_lines=3)
-logger = get_module_logger("message_sender")
+logger = get_logger("message_sender")
class DirectMessageSender:
diff --git a/src/experimental/PFC/observation_info.py b/src/experimental/PFC/observation_info.py
index cc3dbf97c..5a7d72da8 100644
--- a/src/experimental/PFC/observation_info.py
+++ b/src/experimental/PFC/observation_info.py
@@ -1,13 +1,13 @@
from typing import List, Optional, Dict, Any, Set
from maim_message import UserInfo
import time
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.experimental.PFC.chat_observer import ChatObserver
from src.experimental.PFC.chat_states import NotificationHandler, NotificationType, Notification
from src.chat.utils.chat_message_builder import build_readable_messages
import traceback # 导入 traceback 用于调试
-logger = get_module_logger("observation_info")
+logger = get_logger("observation_info")
class ObservationInfoHandler(NotificationHandler):
diff --git a/src/experimental/PFC/pfc.py b/src/experimental/PFC/pfc.py
index f0666b674..893d47937 100644
--- a/src/experimental/PFC/pfc.py
+++ b/src/experimental/PFC/pfc.py
@@ -1,5 +1,5 @@
from typing import List, Tuple, TYPE_CHECKING
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.experimental.PFC.chat_observer import ChatObserver
@@ -15,7 +15,7 @@ install(extra_lines=3)
if TYPE_CHECKING:
pass
-logger = get_module_logger("pfc")
+logger = get_logger("pfc")
def _calculate_similarity(goal1: str, goal2: str) -> float:
@@ -289,13 +289,13 @@ class GoalAnalyzer:
# """直接发送消息到平台的发送器"""
# def __init__(self, private_name: str):
-# self.logger = get_module_logger("direct_sender")
+# self.logger = get_logger("direct_sender")
# self.storage = MessageStorage()
# self.private_name = private_name
# async def send_via_ws(self, message: MessageSending) -> None:
# try:
-# await global_api.send_message(message)
+# await get_global_api().send_message(message)
# except Exception as e:
# raise ValueError(f"未找到平台:{message.message_info.platform} 的url配置,请检查配置文件") from e
@@ -341,6 +341,6 @@ class GoalAnalyzer:
# try:
# await self.send_via_ws(message)
# await self.storage.store_message(message, chat_stream)
-# logger.success(f"[私聊][{self.private_name}]PFC消息已发送: {content}")
+# logger.info(f"[私聊][{self.private_name}]PFC消息已发送: {content}")
# except Exception as e:
# logger.error(f"[私聊][{self.private_name}]PFC消息发送失败: {str(e)}")
diff --git a/src/experimental/PFC/pfc_KnowledgeFetcher.py b/src/experimental/PFC/pfc_KnowledgeFetcher.py
index f48ce2013..38a6dafb9 100644
--- a/src/experimental/PFC/pfc_KnowledgeFetcher.py
+++ b/src/experimental/PFC/pfc_KnowledgeFetcher.py
@@ -1,5 +1,5 @@
from typing import List, Tuple
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.chat.memory_system.Hippocampus import hippocampus_manager
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
@@ -7,7 +7,7 @@ from src.chat.message_receive.message import Message
from src.chat.knowledge.knowledge_lib import qa_manager
from src.chat.utils.chat_message_builder import build_readable_messages
-logger = get_module_logger("knowledge_fetcher")
+logger = get_logger("knowledge_fetcher")
class KnowledgeFetcher:
diff --git a/src/experimental/PFC/pfc_manager.py b/src/experimental/PFC/pfc_manager.py
index 7837606ca..174be78b1 100644
--- a/src/experimental/PFC/pfc_manager.py
+++ b/src/experimental/PFC/pfc_manager.py
@@ -1,10 +1,10 @@
import time
from typing import Dict, Optional
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from .conversation import Conversation
import traceback
-logger = get_module_logger("pfc_manager")
+logger = get_logger("pfc_manager")
class PFCManager:
diff --git a/src/experimental/PFC/pfc_utils.py b/src/experimental/PFC/pfc_utils.py
index 2f7bd5e06..b9e93ee51 100644
--- a/src/experimental/PFC/pfc_utils.py
+++ b/src/experimental/PFC/pfc_utils.py
@@ -1,9 +1,9 @@
import json
import re
from typing import Dict, Any, Optional, Tuple, List, Union
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
-logger = get_module_logger("pfc_utils")
+logger = get_logger("pfc_utils")
def get_items_from_json(
diff --git a/src/experimental/PFC/reply_checker.py b/src/experimental/PFC/reply_checker.py
index a13618797..78319d00f 100644
--- a/src/experimental/PFC/reply_checker.py
+++ b/src/experimental/PFC/reply_checker.py
@@ -1,12 +1,12 @@
import json
from typing import Tuple, List, Dict, Any
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.experimental.PFC.chat_observer import ChatObserver
from maim_message import UserInfo
-logger = get_module_logger("reply_checker")
+logger = get_logger("reply_checker")
class ReplyChecker:
diff --git a/src/experimental/PFC/reply_generator.py b/src/experimental/PFC/reply_generator.py
index bcc35eedb..75a475ff4 100644
--- a/src/experimental/PFC/reply_generator.py
+++ b/src/experimental/PFC/reply_generator.py
@@ -1,5 +1,5 @@
from typing import Tuple, List, Dict, Any
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.experimental.PFC.chat_observer import ChatObserver
@@ -9,7 +9,7 @@ from .observation_info import ObservationInfo
from .conversation_info import ConversationInfo
from src.chat.utils.chat_message_builder import build_readable_messages
-logger = get_module_logger("reply_generator")
+logger = get_logger("reply_generator")
# --- 定义 Prompt 模板 ---
diff --git a/src/experimental/PFC/waiter.py b/src/experimental/PFC/waiter.py
index d5f994fe5..83f21424e 100644
--- a/src/experimental/PFC/waiter.py
+++ b/src/experimental/PFC/waiter.py
@@ -1,4 +1,4 @@
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from .chat_observer import ChatObserver
from .conversation_info import ConversationInfo
@@ -7,7 +7,7 @@ from src.config.config import global_config
import time
import asyncio
-logger = get_module_logger("waiter")
+logger = get_logger("waiter")
# --- 在这里设定你想要的超时时间(秒) ---
# 例如: 120 秒 = 2 分钟
diff --git a/src/experimental/only_message_process.py b/src/experimental/only_message_process.py
index 6dd70ca7f..e5ca6b82d 100644
--- a/src/experimental/only_message_process.py
+++ b/src/experimental/only_message_process.py
@@ -1,4 +1,4 @@
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.message_receive.message import MessageRecv
from src.chat.message_receive.storage import MessageStorage
from src.config.config import global_config
diff --git a/src/individuality/expression_style.py b/src/individuality/expression_style.py
index 40b8da211..74f05bbbf 100644
--- a/src/individuality/expression_style.py
+++ b/src/individuality/expression_style.py
@@ -1,6 +1,6 @@
import random
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
diff --git a/src/individuality/not_using/offline_llm.py b/src/individuality/not_using/offline_llm.py
index 40ec0889d..83cb263c7 100644
--- a/src/individuality/not_using/offline_llm.py
+++ b/src/individuality/not_using/offline_llm.py
@@ -5,13 +5,13 @@ from typing import Tuple, Union
import aiohttp
import requests
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from src.common.tcp_connector import get_tcp_connector
from rich.traceback import install
install(extra_lines=3)
-logger = get_module_logger("offline_llm")
+logger = get_logger("offline_llm")
class LLMRequestOff:
diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py
index 4022f9367..7884f4bc7 100644
--- a/src/llm_models/utils_model.py
+++ b/src/llm_models/utils_model.py
@@ -1,11 +1,12 @@
import asyncio
import json
import re
+import sys
from datetime import datetime
from typing import Tuple, Union, Dict, Any
import aiohttp
from aiohttp.client import ClientResponse
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
import base64
from PIL import Image
import io
@@ -18,7 +19,7 @@ from rich.traceback import install
install(extra_lines=3)
-logger = get_module_logger("model_utils")
+logger = get_logger("model_utils")
class PayLoadTooLargeError(Exception):
@@ -115,6 +116,8 @@ class LLMRequest:
logger.error(f"原始 model dict 信息:{model}")
logger.error(f"配置错误:找不到对应的配置项 - {str(e)}")
raise ValueError(f"配置错误:找不到对应的配置项 - {str(e)}") from e
+ except KeyError as e:
+ logger.warn(f"找不到{model['provider']}_KEY或{model['provider']}_BASE_URL环境变量,请检查配置文件或环境变量设置。")
self.model_name: str = model["name"]
self.params = kwargs
@@ -885,7 +888,7 @@ def compress_base64_image_by_scale(base64_data: str, target_size: int = 0.8 * 10
# 获取压缩后的数据并转换为base64
compressed_data = output_buffer.getvalue()
- logger.success(f"压缩图片: {original_width}x{original_height} -> {new_width}x{new_height}")
+ logger.info(f"压缩图片: {original_width}x{original_height} -> {new_width}x{new_height}")
logger.info(f"压缩前大小: {len(image_data) / 1024:.1f}KB, 压缩后大小: {len(compressed_data) / 1024:.1f}KB")
return base64.b64encode(compressed_data).decode("utf-8")
diff --git a/src/main.py b/src/main.py
index c117ed5cb..2c70b695c 100644
--- a/src/main.py
+++ b/src/main.py
@@ -1,34 +1,34 @@
import asyncio
import time
from maim_message import MessageServer
-from .common.remote import TelemetryHeartBeatTask
-from .manager.async_task_manager import async_task_manager
-from .chat.utils.statistic import OnlineTimeRecordTask, StatisticOutputTask
-from .manager.mood_manager import MoodPrintTask, MoodUpdateTask
-from .chat.emoji_system.emoji_manager import emoji_manager
-from .chat.normal_chat.willing.willing_manager import willing_manager
-from .chat.message_receive.chat_stream import chat_manager
+from src.common.remote import TelemetryHeartBeatTask
+from src.manager.async_task_manager import async_task_manager
+from src.chat.utils.statistic import OnlineTimeRecordTask, StatisticOutputTask
+from src.manager.mood_manager import MoodPrintTask, MoodUpdateTask
+from src.chat.emoji_system.emoji_manager import emoji_manager
+from src.chat.normal_chat.willing.willing_manager import willing_manager
+from src.chat.message_receive.chat_stream import chat_manager
from src.chat.heart_flow.heartflow import heartflow
-from .chat.message_receive.message_sender import message_manager
-from .chat.message_receive.storage import MessageStorage
-from .config.config import global_config
-from .chat.message_receive.bot import chat_bot
-from .common.logger_manager import get_logger
-from .individuality.individuality import individuality, Individuality
-from .common.server import global_server, Server
+from src.chat.message_receive.message_sender import message_manager
+from src.chat.message_receive.storage import MessageStorage
+from src.config.config import global_config
+from src.chat.message_receive.bot import chat_bot
+from src.common.logger import get_logger
+from src.individuality.individuality import individuality, Individuality
+from src.common.server import get_global_server, Server
from rich.traceback import install
-from .chat.focus_chat.expressors.exprssion_learner import expression_learner
-from .api.main import start_api_server
+from src.chat.focus_chat.expressors.exprssion_learner import expression_learner
+from src.api.main import start_api_server
# 导入新的插件管理器
from src.plugin_system.core.plugin_manager import plugin_manager
# 导入消息API和traceback模块
-from src.common.message import global_api
+from src.common.message import get_global_api
# 条件导入记忆系统
if global_config.memory.enable_memory:
- from .chat.memory_system.Hippocampus import hippocampus_manager
+ from src.chat.memory_system.Hippocampus import hippocampus_manager
# 插件系统现在使用统一的插件加载器
@@ -48,8 +48,8 @@ class MainSystem:
self.individuality: Individuality = individuality
# 使用消息API替代直接的FastAPI实例
- self.app: MessageServer = global_api
- self.server: Server = global_server
+ self.app: MessageServer = get_global_api()
+ self.server: Server = get_global_server()
async def initialize(self):
"""初始化系统组件"""
@@ -75,15 +75,15 @@ class MainSystem:
# 启动API服务器
start_api_server()
- logger.success("API服务器启动成功")
+ logger.info("API服务器启动成功")
# 加载所有actions,包括默认的和插件的
plugin_count, component_count = plugin_manager.load_all_plugins()
- logger.success(f"插件系统加载成功: {plugin_count} 个插件,{component_count} 个组件")
+ logger.info(f"插件系统加载成功: {plugin_count} 个插件,{component_count} 个组件")
# 初始化表情管理器
emoji_manager.initialize()
- logger.success("表情包管理器初始化成功")
+ logger.info("表情包管理器初始化成功")
# 添加情绪衰减任务
await async_task_manager.add_task(MoodUpdateTask())
@@ -101,7 +101,7 @@ class MainSystem:
if global_config.memory.enable_memory:
if self.hippocampus_manager:
self.hippocampus_manager.initialize()
- logger.success("记忆系统初始化成功")
+ logger.info("记忆系统初始化成功")
else:
logger.info("记忆系统已禁用,跳过初始化")
@@ -117,19 +117,19 @@ class MainSystem:
personality_sides=global_config.personality.personality_sides,
identity_detail=global_config.identity.identity_detail,
)
- logger.success("个体特征初始化成功")
+ logger.info("个体特征初始化成功")
try:
# 启动全局消息管理器 (负责消息发送/排队)
await message_manager.start()
- logger.success("全局消息管理器启动成功")
+ logger.info("全局消息管理器启动成功")
# 启动心流系统主循环
asyncio.create_task(heartflow.heartflow_start_working())
- logger.success("心流系统启动成功")
+ logger.info("心流系统启动成功")
init_time = int(1000 * (time.time() - init_start_time))
- logger.success(f"初始化完成,神经元放电{init_time}次")
+ logger.info(f"初始化完成,神经元放电{init_time}次")
except Exception as e:
logger.error(f"启动大脑和外部世界失败: {e}")
raise
diff --git a/src/manager/async_task_manager.py b/src/manager/async_task_manager.py
index e198d0e10..0a6a5e45f 100644
--- a/src/manager/async_task_manager.py
+++ b/src/manager/async_task_manager.py
@@ -4,7 +4,7 @@ import asyncio
from asyncio import Task, Event, Lock
from typing import Callable, Dict
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("async_task_manager")
diff --git a/src/manager/local_store_manager.py b/src/manager/local_store_manager.py
index 33a30cec7..0f7a2a71c 100644
--- a/src/manager/local_store_manager.py
+++ b/src/manager/local_store_manager.py
@@ -1,7 +1,7 @@
import json
import os
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
LOCAL_STORE_FILE_PATH = "data/local_store.json"
@@ -50,20 +50,20 @@ class LocalStoreManager:
try:
with open(self.file_path, "r", encoding="utf-8") as f:
self.store = json.load(f)
- logger.success("全都记起来了!")
+ logger.info("全都记起来了!")
except json.JSONDecodeError:
logger.warning("啊咧?记事本被弄脏了,正在重建记事本......")
self.store = {}
with open(self.file_path, "w", encoding="utf-8") as f:
json.dump({}, f, ensure_ascii=False, indent=4)
- logger.success("记事本重建成功!")
+ logger.info("记事本重建成功!")
else:
# 不存在本地存储文件,创建新的目录和文件
logger.warning("啊咧?记事本不存在,正在创建新的记事本......")
os.makedirs(os.path.dirname(self.file_path), exist_ok=True)
with open(self.file_path, "w", encoding="utf-8") as f:
json.dump({}, f, ensure_ascii=False, indent=4)
- logger.success("记事本创建成功!")
+ logger.info("记事本创建成功!")
def save_local_store(self):
"""保存本地存储数据"""
diff --git a/src/manager/mood_manager.py b/src/manager/mood_manager.py
index f1253bbc9..b73fa7112 100644
--- a/src/manager/mood_manager.py
+++ b/src/manager/mood_manager.py
@@ -5,7 +5,7 @@ from dataclasses import dataclass
from typing import Dict, Tuple
from ..config.config import global_config
-from ..common.logger_manager import get_logger
+from ..common.logger import get_logger
from ..manager.async_task_manager import AsyncTask
from ..individuality.individuality import individuality
diff --git a/src/person_info/impression_update_task.py b/src/person_info/impression_update_task.py
index 480090163..27271c544 100644
--- a/src/person_info/impression_update_task.py
+++ b/src/person_info/impression_update_task.py
@@ -1,5 +1,5 @@
from src.manager.async_task_manager import AsyncTask
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.person_info.person_info import PersonInfoManager
from src.person_info.relationship_manager import relationship_manager
from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp
diff --git a/src/person_info/person_info.py b/src/person_info/person_info.py
index a62200c90..f57bfb090 100644
--- a/src/person_info/person_info.py
+++ b/src/person_info/person_info.py
@@ -1,4 +1,4 @@
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.common.database.database import db
from src.common.database.database_model import PersonInfo # 新增导入
import copy
diff --git a/src/person_info/relationship_manager.py b/src/person_info/relationship_manager.py
index 0029e6492..3e51583d5 100644
--- a/src/person_info/relationship_manager.py
+++ b/src/person_info/relationship_manager.py
@@ -1,4 +1,4 @@
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
import math
from src.person_info.person_info import person_info_manager, PersonInfoManager
import time
diff --git a/src/plugin_system/apis/action_apis.py b/src/plugin_system/apis/action_apis.py
index b6a31dcd7..84b750dad 100644
--- a/src/plugin_system/apis/action_apis.py
+++ b/src/plugin_system/apis/action_apis.py
@@ -7,7 +7,7 @@ Action相关API聚合模块
from src.plugin_system.apis.message_api import MessageAPI
from src.plugin_system.apis.database_api import DatabaseAPI
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("action_apis")
diff --git a/src/plugin_system/apis/config_api.py b/src/plugin_system/apis/config_api.py
index 06f64a9da..af1aa61a5 100644
--- a/src/plugin_system/apis/config_api.py
+++ b/src/plugin_system/apis/config_api.py
@@ -1,5 +1,5 @@
from typing import Any
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.config.config import global_config
from src.person_info.person_info import person_info_manager
diff --git a/src/plugin_system/apis/database_api.py b/src/plugin_system/apis/database_api.py
index 7b99e895b..5239fb9ac 100644
--- a/src/plugin_system/apis/database_api.py
+++ b/src/plugin_system/apis/database_api.py
@@ -1,7 +1,7 @@
import traceback
import time
from typing import Dict, List, Any, Union, Type
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.common.database.database_model import ActionRecords
from src.common.database.database import db
from peewee import Model, DoesNotExist
diff --git a/src/plugin_system/apis/hearflow_api.py b/src/plugin_system/apis/hearflow_api.py
index 2c26ce768..54a3c3689 100644
--- a/src/plugin_system/apis/hearflow_api.py
+++ b/src/plugin_system/apis/hearflow_api.py
@@ -1,5 +1,5 @@
from typing import Optional, List, Any
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.heart_flow.heartflow import heartflow
from src.chat.heart_flow.sub_heartflow import SubHeartflow, ChatState
diff --git a/src/plugin_system/apis/independent_apis.py b/src/plugin_system/apis/independent_apis.py
index a3078d677..d094b3889 100644
--- a/src/plugin_system/apis/independent_apis.py
+++ b/src/plugin_system/apis/independent_apis.py
@@ -10,7 +10,7 @@ from src.plugin_system.apis.config_api import ConfigAPI
from src.plugin_system.apis.utils_api import UtilsAPI
from src.plugin_system.apis.stream_api import StreamAPI
from src.plugin_system.apis.hearflow_api import HearflowAPI
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("independent_apis")
diff --git a/src/plugin_system/apis/llm_api.py b/src/plugin_system/apis/llm_api.py
index 743aac748..c4a9aeb92 100644
--- a/src/plugin_system/apis/llm_api.py
+++ b/src/plugin_system/apis/llm_api.py
@@ -1,5 +1,5 @@
from typing import Tuple, Dict, Any
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.llm_models.utils_model import LLMRequest
from src.config.config import global_config
diff --git a/src/plugin_system/apis/message_api.py b/src/plugin_system/apis/message_api.py
index 6b6dbdbe3..cd0ce4bfb 100644
--- a/src/plugin_system/apis/message_api.py
+++ b/src/plugin_system/apis/message_api.py
@@ -1,7 +1,7 @@
import traceback
import time
from typing import List, Dict, Any
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.focus_chat.hfc_utils import create_empty_anchor_message
# 以下为类型注解需要
diff --git a/src/plugin_system/apis/plugin_api.py b/src/plugin_system/apis/plugin_api.py
index d38999065..fe2475d8a 100644
--- a/src/plugin_system/apis/plugin_api.py
+++ b/src/plugin_system/apis/plugin_api.py
@@ -5,7 +5,7 @@
提供所有插件API功能的统一访问入口
"""
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
# 导入所有API模块
from src.plugin_system.apis.message_api import MessageAPI
diff --git a/src/plugin_system/apis/stream_api.py b/src/plugin_system/apis/stream_api.py
index 0ed20401d..881a4bb1a 100644
--- a/src/plugin_system/apis/stream_api.py
+++ b/src/plugin_system/apis/stream_api.py
@@ -1,5 +1,5 @@
from typing import Optional, List, Dict, Any, Tuple
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.message_receive.chat_stream import ChatManager, ChatStream
from src.chat.focus_chat.hfc_utils import parse_thinking_id_to_timestamp
import asyncio
diff --git a/src/plugin_system/apis/utils_api.py b/src/plugin_system/apis/utils_api.py
index 1cae23b03..61efec821 100644
--- a/src/plugin_system/apis/utils_api.py
+++ b/src/plugin_system/apis/utils_api.py
@@ -2,7 +2,7 @@ import os
import json
import time
from typing import Any, Optional
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("utils_api")
diff --git a/src/plugin_system/base/base_action.py b/src/plugin_system/base/base_action.py
index b9899f9a4..75e297977 100644
--- a/src/plugin_system/base/base_action.py
+++ b/src/plugin_system/base/base_action.py
@@ -1,6 +1,6 @@
from abc import ABC, abstractmethod
from typing import Tuple
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.plugin_system.apis.plugin_api import PluginAPI
from src.plugin_system.base.component_types import ActionActivationType, ChatMode, ActionInfo, ComponentType
diff --git a/src/plugin_system/base/base_command.py b/src/plugin_system/base/base_command.py
index 9596c5d38..e20e8c947 100644
--- a/src/plugin_system/base/base_command.py
+++ b/src/plugin_system/base/base_command.py
@@ -1,6 +1,6 @@
from abc import ABC, abstractmethod
from typing import Dict, Tuple, Optional, List
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.plugin_system.apis.plugin_api import PluginAPI
from src.plugin_system.base.component_types import CommandInfo, ComponentType
from src.chat.message_receive.message import MessageRecv
diff --git a/src/plugin_system/base/base_plugin.py b/src/plugin_system/base/base_plugin.py
index 9b000dbd0..ba202b78d 100644
--- a/src/plugin_system/base/base_plugin.py
+++ b/src/plugin_system/base/base_plugin.py
@@ -3,7 +3,7 @@ from typing import Dict, List, Type, Optional, Any
import os
import inspect
import toml
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.plugin_system.base.component_types import (
PluginInfo,
ComponentInfo,
diff --git a/src/plugin_system/core/component_registry.py b/src/plugin_system/core/component_registry.py
index d3283f5f2..863146a86 100644
--- a/src/plugin_system/core/component_registry.py
+++ b/src/plugin_system/core/component_registry.py
@@ -1,6 +1,6 @@
from typing import Dict, List, Type, Optional, Any, Pattern
import re
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.plugin_system.base.component_types import (
ComponentInfo,
ActionInfo,
diff --git a/src/plugin_system/core/plugin_manager.py b/src/plugin_system/core/plugin_manager.py
index ea2d0c51d..2be1279bb 100644
--- a/src/plugin_system/core/plugin_manager.py
+++ b/src/plugin_system/core/plugin_manager.py
@@ -7,7 +7,7 @@ from pathlib import Path
if TYPE_CHECKING:
from src.plugin_system.base.base_plugin import BasePlugin
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.plugin_system.core.component_registry import component_registry
from src.plugin_system.base.component_types import ComponentType, PluginInfo
diff --git a/src/plugins/built_in/core_actions/plugin.py b/src/plugins/built_in/core_actions/plugin.py
index c7b9f483f..734308471 100644
--- a/src/plugins/built_in/core_actions/plugin.py
+++ b/src/plugins/built_in/core_actions/plugin.py
@@ -13,7 +13,7 @@ from src.plugin_system import BasePlugin, register_plugin, BaseAction, Component
from src.plugin_system.base.base_command import BaseCommand
# 导入依赖的系统组件
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.heart_flow.observation.chatting_observation import ChattingObservation
from src.chat.focus_chat.hfc_utils import create_empty_anchor_message
diff --git a/src/plugins/built_in/doubao_pic_plugin/plugin.py b/src/plugins/built_in/doubao_pic_plugin/plugin.py
index 1fc2a39d3..de0147805 100644
--- a/src/plugins/built_in/doubao_pic_plugin/plugin.py
+++ b/src/plugins/built_in/doubao_pic_plugin/plugin.py
@@ -28,7 +28,7 @@ from src.plugin_system.base.base_plugin import BasePlugin
from src.plugin_system.base.base_plugin import register_plugin
from src.plugin_system.base.base_action import BaseAction
from src.plugin_system.base.component_types import ComponentInfo, ActionActivationType, ChatMode
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("doubao_pic_plugin")
diff --git a/src/plugins/built_in/mute_plugin/plugin.py b/src/plugins/built_in/mute_plugin/plugin.py
index 4e83624f4..2697f4b03 100644
--- a/src/plugins/built_in/mute_plugin/plugin.py
+++ b/src/plugins/built_in/mute_plugin/plugin.py
@@ -24,7 +24,7 @@ from src.plugin_system.base.base_plugin import register_plugin
from src.plugin_system.base.base_action import BaseAction
from src.plugin_system.base.base_command import BaseCommand
from src.plugin_system.base.component_types import ComponentInfo, ActionActivationType, ChatMode
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("mute_plugin")
diff --git a/src/plugins/built_in/tts_plgin/actions/tts_action.py b/src/plugins/built_in/tts_plgin/actions/tts_action.py
index 0e64dcb4c..87d30aa7c 100644
--- a/src/plugins/built_in/tts_plgin/actions/tts_action.py
+++ b/src/plugins/built_in/tts_plgin/actions/tts_action.py
@@ -1,4 +1,4 @@
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.actions.base_action import ActionActivationType
from src.chat.actions.plugin_action import PluginAction, register_action
from typing import Tuple
diff --git a/src/plugins/built_in/vtb_action/actions/vtb_action.py b/src/plugins/built_in/vtb_action/actions/vtb_action.py
index 30b625c39..6089bc252 100644
--- a/src/plugins/built_in/vtb_action/actions/vtb_action.py
+++ b/src/plugins/built_in/vtb_action/actions/vtb_action.py
@@ -1,4 +1,4 @@
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.chat.actions.plugin_action import PluginAction, register_action, ActionActivationType
from typing import Tuple
diff --git a/src/plugins/examples/example_plugin/plugin.py b/src/plugins/examples/example_plugin/plugin.py
index ffd0cbd91..34689685d 100644
--- a/src/plugins/examples/example_plugin/plugin.py
+++ b/src/plugins/examples/example_plugin/plugin.py
@@ -31,7 +31,7 @@ from src.plugin_system.base.base_plugin import register_plugin
from src.plugin_system.base.base_action import BaseAction
from src.plugin_system.base.base_command import BaseCommand
from src.plugin_system.base.component_types import ComponentInfo, ActionActivationType, ChatMode
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
logger = get_logger("example_comprehensive")
diff --git a/src/tools/not_used/change_mood.py b/src/tools/not_used/change_mood.py
index 69fc3bb78..e8276abf5 100644
--- a/src/tools/not_used/change_mood.py
+++ b/src/tools/not_used/change_mood.py
@@ -1,6 +1,6 @@
from typing import Any
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.config.config import global_config
from src.tools.tool_can_use.base_tool import BaseTool
from src.manager.mood_manager import mood_manager
diff --git a/src/tools/not_used/change_relationship.py b/src/tools/not_used/change_relationship.py
index b038a3e62..721397087 100644
--- a/src/tools/not_used/change_relationship.py
+++ b/src/tools/not_used/change_relationship.py
@@ -1,5 +1,5 @@
from typing import Any
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.tools.tool_can_use.base_tool import BaseTool
diff --git a/src/tools/tool_can_use/base_tool.py b/src/tools/tool_can_use/base_tool.py
index 62697168f..89d051dc5 100644
--- a/src/tools/tool_can_use/base_tool.py
+++ b/src/tools/tool_can_use/base_tool.py
@@ -3,7 +3,7 @@ import inspect
import importlib
import pkgutil
import os
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from rich.traceback import install
install(extra_lines=3)
diff --git a/src/tools/tool_can_use/compare_numbers_tool.py b/src/tools/tool_can_use/compare_numbers_tool.py
index 72c7d7d15..e73f6e79f 100644
--- a/src/tools/tool_can_use/compare_numbers_tool.py
+++ b/src/tools/tool_can_use/compare_numbers_tool.py
@@ -1,8 +1,8 @@
from src.tools.tool_can_use.base_tool import BaseTool
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
from typing import Any
-logger = get_module_logger("compare_numbers_tool")
+logger = get_logger("compare_numbers_tool")
class CompareNumbersTool(BaseTool):
diff --git a/src/tools/tool_can_use/get_knowledge.py b/src/tools/tool_can_use/get_knowledge.py
index fd37f11e7..cebb01684 100644
--- a/src/tools/tool_can_use/get_knowledge.py
+++ b/src/tools/tool_can_use/get_knowledge.py
@@ -1,7 +1,7 @@
from src.tools.tool_can_use.base_tool import BaseTool
from src.chat.utils.utils import get_embedding
from src.common.database.database_model import Knowledges # Updated import
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from typing import Any, Union, List # Added List
import json # Added for parsing embedding
import math # Added for cosine similarity
diff --git a/src/tools/tool_can_use/lpmm_get_knowledge.py b/src/tools/tool_can_use/lpmm_get_knowledge.py
index fc2dc072b..df4fa6a4f 100644
--- a/src/tools/tool_can_use/lpmm_get_knowledge.py
+++ b/src/tools/tool_can_use/lpmm_get_knowledge.py
@@ -1,7 +1,7 @@
from src.tools.tool_can_use.base_tool import BaseTool
# from src.common.database import db
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from typing import Dict, Any
from src.chat.knowledge.knowledge_lib import qa_manager
diff --git a/src/tools/tool_can_use/rename_person_tool.py b/src/tools/tool_can_use/rename_person_tool.py
index e7f07a84e..84e048ef6 100644
--- a/src/tools/tool_can_use/rename_person_tool.py
+++ b/src/tools/tool_can_use/rename_person_tool.py
@@ -1,6 +1,6 @@
from src.tools.tool_can_use.base_tool import BaseTool, register_tool
from src.person_info.person_info import person_info_manager
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
import time
logger = get_logger("rename_person_tool")
diff --git a/src/tools/tool_use.py b/src/tools/tool_use.py
index b6fabb21e..738eeed48 100644
--- a/src/tools/tool_use.py
+++ b/src/tools/tool_use.py
@@ -1,5 +1,5 @@
import json
-from src.common.logger_manager import get_logger
+from src.common.logger import get_logger
from src.tools.tool_can_use import get_all_tool_definitions, get_tool_instance
logger = get_logger("tool_use")
diff --git a/tests/test_build_readable_messages.py b/tests/test_build_readable_messages.py
index da963e45a..e1658bcbc 100644
--- a/tests/test_build_readable_messages.py
+++ b/tests/test_build_readable_messages.py
@@ -10,10 +10,10 @@ import copy
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp_with_chat, build_readable_messages
-from src.common.logger import get_module_logger
+from src.common.logger import get_logger
# 创建测试日志记录器
-logger = get_module_logger("test_readable_msg")
+logger = get_logger("test_readable_msg")
class TestBuildReadableMessages(unittest.TestCase):