Merge pull request #383 from SengokuCola/refactor

Refactor
This commit is contained in:
SengokuCola
2025-03-14 17:49:27 +08:00
committed by GitHub
5 changed files with 84 additions and 74 deletions

11
bot.py
View File

@@ -10,9 +10,8 @@ import uvicorn
from dotenv import load_dotenv from dotenv import load_dotenv
from nonebot.adapters.onebot.v11 import Adapter from nonebot.adapters.onebot.v11 import Adapter
import platform import platform
from src.plugins.utils.logger_config import setup_logger from src.plugins.utils.logger_config import LogModule, LogClassification
from loguru import logger
# 配置日志格式 # 配置日志格式
@@ -102,7 +101,9 @@ def load_env():
def load_logger(): def load_logger():
setup_logger() global logger # 使得bot.py中其他函数也能调用
log_module = LogModule()
logger = log_module.setup_logger(LogClassification.BASE)
def scan_provider(env_config: dict): def scan_provider(env_config: dict):
@@ -174,8 +175,6 @@ def raw_main():
if platform.system().lower() != "windows": if platform.system().lower() != "windows":
time.tzset() time.tzset()
# 配置日志
load_logger()
easter_egg() easter_egg()
init_config() init_config()
init_env() init_env()
@@ -207,6 +206,8 @@ def raw_main():
if __name__ == "__main__": if __name__ == "__main__":
try: try:
# 配置日志使得主程序直接退出时候也能访问logger
load_logger()
raw_main() raw_main()
app = nonebot.get_asgi() app = nonebot.get_asgi()

View File

@@ -31,10 +31,11 @@ from .utils_image import image_path_to_base64
from .utils_user import get_user_nickname, get_user_cardname, get_groupname from .utils_user import get_user_nickname, get_user_cardname, get_groupname
from .willing_manager import willing_manager # 导入意愿管理器 from .willing_manager import willing_manager # 导入意愿管理器
from .message_base import UserInfo, GroupInfo, Seg from .message_base import UserInfo, GroupInfo, Seg
from ..utils.logger_config import setup_logger, LogModule from ..utils.logger_config import LogClassification, LogModule
# 配置日志 # 配置日志
logger = setup_logger(LogModule.CHAT) log_module = LogModule()
logger = log_module.setup_logger(LogClassification.CHAT)
class ChatBot: class ChatBot:

View File

@@ -18,10 +18,11 @@ from ..chat.utils import get_embedding
from ..chat.utils_image import ImageManager, image_path_to_base64 from ..chat.utils_image import ImageManager, image_path_to_base64
from ..models.utils_model import LLM_request from ..models.utils_model import LLM_request
from ..utils.logger_config import setup_logger, LogModule from ..utils.logger_config import LogClassification, LogModule
# 配置日志 # 配置日志
logger = setup_logger(LogModule.EMOJI) log_module = LogModule()
logger = log_module.setup_logger(LogClassification.EMOJI)
driver = get_driver() driver = get_driver()
config = driver.config config = driver.config

View File

@@ -19,10 +19,11 @@ from ..chat.utils import (
) )
from ..models.utils_model import LLM_request from ..models.utils_model import LLM_request
from ..utils.logger_config import setup_logger, LogModule from ..utils.logger_config import LogClassification, LogModule
# 配置日志 # 配置日志
logger = setup_logger(LogModule.MEMORY) log_module = LogModule()
logger = log_module.setup_logger(LogClassification.MEMORY)
logger.info("初始化记忆系统") logger.info("初始化记忆系统")

View File

@@ -1,71 +1,77 @@
import sys import sys
from loguru import logger import loguru
from enum import Enum from enum import Enum
class LogModule(Enum): class LogClassification(Enum):
BASE = "base" BASE = "base"
MEMORY = "memory" MEMORY = "memory"
EMOJI = "emoji" EMOJI = "emoji"
CHAT = "chat" CHAT = "chat"
def setup_logger(log_type: LogModule = LogModule.BASE): class LogModule:
"""配置日志格式 logger = loguru.logger.opt()
Args: def __init__(self):
log_type: 日志类型可选值BASE(基础日志)、MEMORY(记忆系统日志)、EMOJI(表情包系统日志) pass
""" def setup_logger(self, log_type: LogClassification):
# 移除默认的处理器 """配置日志格式
logger.remove()
Args:
# 基础日志格式 log_type: 日志类型可选值BASE(基础日志)、MEMORY(记忆系统日志)、EMOJI(表情包系统日志)
base_format = "<green>{time:HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>" """
# 移除默认日志处理器
chat_format = "<green>{time:HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>" self.logger.remove()
# 记忆系统日志格式 # 基础日志格式
memory_format = "<green>{time:HH:mm}</green> | <level>{level: <8}</level> | <light-magenta>海马体</light-magenta> | <level>{message}</level>" base_format = "<green>{time:HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>"
# 表情包系统日志格式 chat_format = "<green>{time:HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>"
emoji_format = "<green>{time:HH:mm}</green> | <level>{level: <8}</level> | <yellow>表情包</yellow> | <cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>"
# 根据日志类型选择日志格式和输出 # 记忆系统日志格式
if log_type == LogModule.CHAT: memory_format = "<green>{time:HH:mm}</green> | <level>{level: <8}</level> | <light-magenta>海马体</light-magenta> | <level>{message}</level>"
logger.add(
sys.stderr, # 表情包系统日志格式
format=chat_format, emoji_format = "<green>{time:HH:mm}</green> | <level>{level: <8}</level> | <yellow>表情包</yellow> | <cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>"
# level="INFO" # 根据日志类型选择日志格式和输出
) if log_type == LogClassification.CHAT:
elif log_type == LogModule.MEMORY: self.logger.add(
# 同时输出到控制台和文件 sys.stderr,
logger.add( format=chat_format,
sys.stderr, # level="INFO"
format=memory_format, )
# level="INFO" elif log_type == LogClassification.MEMORY:
)
logger.add( # 同时输出到控制台和文件
"logs/memory.log", self.logger.add(
format=memory_format, sys.stderr,
level="INFO", format=memory_format,
rotation="1 day", # level="INFO"
retention="7 days" )
) self.logger.add(
elif log_type == LogModule.EMOJI: "logs/memory.log",
logger.add( format=memory_format,
sys.stderr, level="INFO",
format=emoji_format, rotation="1 day",
# level="INFO" retention="7 days"
) )
logger.add( elif log_type == LogClassification.EMOJI:
"logs/emoji.log", self.logger.add(
format=emoji_format, sys.stderr,
level="INFO", format=emoji_format,
rotation="1 day", # level="INFO"
retention="7 days" )
) self.logger.add(
else: # BASE "logs/emoji.log",
logger.add( format=emoji_format,
sys.stderr, level="INFO",
format=base_format, rotation="1 day",
level="INFO" retention="7 days"
) )
else: # BASE
return logger self.logger.add(
sys.stderr,
format=base_format,
level="INFO"
)
return self.logger