From b97c2b320d2a7409075249e7ec32f837c84e07ec Mon Sep 17 00:00:00 2001
From: SengokuCola <1026294844@qq.com>
Date: Sun, 13 Apr 2025 21:42:08 +0800
Subject: [PATCH] fix: improve logger
---
src/common/logger.py | 21 ++++++++-
.../tool_can_use/fibonacci_sequence_tool.py | 47 -------------------
src/do_tool/tool_use.py | 9 +++-
src/plugins/chat/bot.py | 4 +-
src/plugins/chat/message_sender.py | 4 +-
.../think_flow_chat/think_flow_chat.py | 8 ++--
src/plugins/memory_system/Hippocampus.py | 4 +-
src/plugins/person_info/person_info.py | 8 ++--
8 files changed, 41 insertions(+), 64 deletions(-)
delete mode 100644 src/do_tool/tool_can_use/fibonacci_sequence_tool.py
diff --git a/src/common/logger.py b/src/common/logger.py
index 0a8839d2f..7365e34a6 100644
--- a/src/common/logger.py
+++ b/src/common/logger.py
@@ -102,10 +102,28 @@ MOOD_STYLE_CONFIG = {
"file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 心情 | {message}"),
},
"simple": {
- "console_format": ("{time:MM-DD HH:mm} | 心情 | {message}"),
+ "console_format": ("{time:MM-DD HH:mm} | 心情 | {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} | "
+ "{extra[module]: <12} | "
+ "工具使用 | "
+ "{message}"
+ ),
+ "file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}"),
+ },
+ "simple": {
+ "console_format": ("{time:MM-DD HH:mm} | 工具使用 | {message}"),
+ "file_format": ("{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {extra[module]: <15} | 工具使用 | {message}"),
+ },
+}
+
# relationship
RELATION_STYLE_CONFIG = {
@@ -308,6 +326,7 @@ SUB_HEARTFLOW_STYLE_CONFIG = (
) # noqa: E501
WILLING_STYLE_CONFIG = WILLING_STYLE_CONFIG["simple"] if SIMPLE_OUTPUT else WILLING_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"]
def is_registered_module(record: dict) -> bool:
diff --git a/src/do_tool/tool_can_use/fibonacci_sequence_tool.py b/src/do_tool/tool_can_use/fibonacci_sequence_tool.py
deleted file mode 100644
index 4609b18a0..000000000
--- a/src/do_tool/tool_can_use/fibonacci_sequence_tool.py
+++ /dev/null
@@ -1,47 +0,0 @@
-from src.do_tool.tool_can_use.base_tool import BaseTool, register_tool
-from src.common.logger import get_module_logger
-from typing import Dict, Any
-
-logger = get_module_logger("fibonacci_sequence_tool")
-
-
-class FibonacciSequenceTool(BaseTool):
- """生成斐波那契数列的工具"""
-
- name = "fibonacci_sequence"
- description = "生成指定长度的斐波那契数列"
- parameters = {
- "type": "object",
- "properties": {"n": {"type": "integer", "description": "斐波那契数列的长度", "minimum": 1}},
- "required": ["n"],
- }
-
- async def execute(self, function_args: Dict[str, Any], message_txt: str = "") -> Dict[str, Any]:
- """执行工具功能
-
- Args:
- function_args: 工具参数
- message_txt: 原始消息文本
-
- Returns:
- Dict: 工具执行结果
- """
- try:
- n = function_args.get("n")
- if n <= 0:
- raise ValueError("参数n必须大于0")
-
- sequence = []
- a, b = 0, 1
- for _ in range(n):
- sequence.append(a)
- a, b = b, a + b
-
- return {"name": self.name, "content": sequence}
- except Exception as e:
- logger.error(f"fibonacci_sequence工具执行失败: {str(e)}")
- return {"name": self.name, "content": f"执行失败: {str(e)}"}
-
-
-# 注册工具
-register_tool(FibonacciSequenceTool)
diff --git a/src/do_tool/tool_use.py b/src/do_tool/tool_use.py
index dd1ca7044..b29bfcb02 100644
--- a/src/do_tool/tool_use.py
+++ b/src/do_tool/tool_use.py
@@ -4,10 +4,15 @@ from src.plugins.chat.chat_stream import ChatStream
from src.common.database import db
import time
import json
-from src.common.logger import get_module_logger
+from src.common.logger import get_module_logger, TOOL_USE_STYLE_CONFIG, LogConfig
from src.do_tool.tool_can_use import get_all_tool_definitions, get_tool_instance
-logger = get_module_logger("tool_use")
+tool_use_config = LogConfig(
+ # 使用消息发送专用样式
+ console_format=TOOL_USE_STYLE_CONFIG["console_format"],
+ file_format=TOOL_USE_STYLE_CONFIG["file_format"],
+)
+logger = get_module_logger("tool_use", config=tool_use_config)
class ToolUser:
diff --git a/src/plugins/chat/bot.py b/src/plugins/chat/bot.py
index c2126eee2..a3c56f636 100644
--- a/src/plugins/chat/bot.py
+++ b/src/plugins/chat/bot.py
@@ -38,7 +38,7 @@ class ChatBot:
async def _ensure_started(self):
"""确保所有任务已启动"""
if not self._started:
- logger.info("确保ChatBot所有任务已启动")
+ logger.trace("确保ChatBot所有任务已启动")
self._started = True
@@ -84,7 +84,7 @@ class ChatBot:
message = MessageRecv(message_data)
groupinfo = message.message_info.group_info
userinfo = message.message_info.user_info
- logger.debug(f"处理消息:{str(message_data)[:120]}...")
+ logger.trace(f"处理消息:{str(message_data)[:120]}...")
if userinfo.user_id in global_config.ban_user_id:
logger.debug(f"用户{userinfo.user_id}被禁止回复")
diff --git a/src/plugins/chat/message_sender.py b/src/plugins/chat/message_sender.py
index 9f547ed10..c223bbe4d 100644
--- a/src/plugins/chat/message_sender.py
+++ b/src/plugins/chat/message_sender.py
@@ -70,9 +70,9 @@ class Message_Sender:
thinking_start_time=message.thinking_start_time,
is_emoji=message.is_emoji,
)
- logger.debug(f"{message.processed_plain_text},{typing_time},计算输入时间结束")
+ logger.trace(f"{message.processed_plain_text},{typing_time},计算输入时间结束")
await asyncio.sleep(typing_time)
- logger.debug(f"{message.processed_plain_text},{typing_time},等待输入时间结束")
+ logger.trace(f"{message.processed_plain_text},{typing_time},等待输入时间结束")
message_json = message.to_dict()
diff --git a/src/plugins/chat_module/think_flow_chat/think_flow_chat.py b/src/plugins/chat_module/think_flow_chat/think_flow_chat.py
index 098ee1552..9f78a10f7 100644
--- a/src/plugins/chat_module/think_flow_chat/think_flow_chat.py
+++ b/src/plugins/chat_module/think_flow_chat/think_flow_chat.py
@@ -184,24 +184,24 @@ class ThinkFlowChat:
heartflow.create_subheartflow(chat.stream_id)
await message.process()
- logger.debug(f"消息处理成功{message.processed_plain_text}")
+ logger.trace(f"消息处理成功{message.processed_plain_text}")
# 过滤词/正则表达式过滤
if self._check_ban_words(message.processed_plain_text, chat, userinfo) or self._check_ban_regex(
message.raw_message, chat, userinfo
):
return
- logger.debug(f"过滤词/正则表达式过滤成功{message.processed_plain_text}")
+ logger.trace(f"过滤词/正则表达式过滤成功{message.processed_plain_text}")
await self.storage.store_message(message, chat)
- logger.debug(f"存储成功{message.processed_plain_text}")
+ logger.trace(f"存储成功{message.processed_plain_text}")
# 记忆激活
with Timer("记忆激活", timing_results):
interested_rate = await HippocampusManager.get_instance().get_activate_from_text(
message.processed_plain_text, fast_retrieval=True
)
- logger.debug(f"记忆激活: {interested_rate}")
+ logger.trace(f"记忆激活: {interested_rate}")
# 查询缓冲器结果,会整合前面跳过的消息,改变processed_plain_text
buffer_result = await message_buffer.query_buffer_result(message)
diff --git a/src/plugins/memory_system/Hippocampus.py b/src/plugins/memory_system/Hippocampus.py
index 4e52afeca..179a5d13d 100644
--- a/src/plugins/memory_system/Hippocampus.py
+++ b/src/plugins/memory_system/Hippocampus.py
@@ -1301,7 +1301,7 @@ class Hippocampus:
# 对每个关键词进行扩散式检索
for keyword in valid_keywords:
- logger.debug(f"开始以关键词 '{keyword}' 为中心进行扩散检索 (最大深度: {max_depth}):")
+ logger.trace(f"开始以关键词 '{keyword}' 为中心进行扩散检索 (最大深度: {max_depth}):")
# 初始化激活值
activation_values = {keyword: 1.0}
# 记录已访问的节点
@@ -1352,7 +1352,7 @@ class Hippocampus:
# 计算激活节点数与总节点数的比值
total_activation = sum(activate_map.values())
- logger.info(f"总激活值: {total_activation:.2f}")
+ logger.trace(f"总激活值: {total_activation:.2f}")
total_nodes = len(self.memory_graph.G.nodes())
# activated_nodes = len(activate_map)
activation_ratio = total_activation / total_nodes if total_nodes > 0 else 0
diff --git a/src/plugins/person_info/person_info.py b/src/plugins/person_info/person_info.py
index 4c1f9c688..a64a8264b 100644
--- a/src/plugins/person_info/person_info.py
+++ b/src/plugins/person_info/person_info.py
@@ -264,17 +264,17 @@ class PersonInfoManager:
msg_interval = int(round(np.percentile(filtered, 80)))
await self.update_one_field(person_id, "msg_interval", msg_interval)
- logger.debug(f"用户{person_id}的msg_interval已经被更新为{msg_interval}")
+ logger.trace(f"用户{person_id}的msg_interval已经被更新为{msg_interval}")
except Exception as e:
- logger.debug(f"用户{person_id}消息间隔计算失败: {type(e).__name__}: {str(e)}")
+ logger.trace(f"用户{person_id}消息间隔计算失败: {type(e).__name__}: {str(e)}")
continue
# 其他...
if msg_interval_map:
- logger.info("已保存分布图到: logs/person_info")
+ logger.trace("已保存分布图到: logs/person_info")
current_time = datetime.datetime.now()
- logger.info(f"个人信息推断结束: {current_time.strftime('%Y-%m-%d %H:%M:%S')}")
+ logger.trace(f"个人信息推断结束: {current_time.strftime('%Y-%m-%d %H:%M:%S')}")
await asyncio.sleep(86400)
except Exception as e: