feat: 新增运行时重载配置文件;新增根据不同环境(dev;prod)显示不同级别的log

This commit is contained in:
HYY1116
2025-03-11 20:11:17 +08:00
parent 06e01d5a7c
commit 3bf5cd6131
4 changed files with 54 additions and 14 deletions

38
bot.py
View File

@@ -51,15 +51,15 @@ def init_env():
with open(".env", "w") as f: with open(".env", "w") as f:
f.write("ENVIRONMENT=prod") f.write("ENVIRONMENT=prod")
# 检测.env.prod文件是否存在 # 检测.env.prod文件是否存在
if not os.path.exists(".env.prod"): if not os.path.exists(".env.prod"):
logger.error("检测到.env.prod文件不存在") logger.error("检测到.env.prod文件不存在")
shutil.copy("template.env", "./.env.prod") shutil.copy("template.env", "./.env.prod")
# 检测.env.dev文件是否存在不存在的话直接复制生产环境配置 # 检测.env.dev文件是否存在不存在的话直接复制生产环境配置
if not os.path.exists(".env.dev"): if not os.path.exists(".env.dev"):
logger.error("检测到.env.dev文件不存在") logger.error("检测到.env.dev文件不存在")
shutil.copy("template.env", "./.env.dev") shutil.copy(".env.prod", "./.env.dev")
# 首先加载基础环境变量.env # 首先加载基础环境变量.env
if os.path.exists(".env"): if os.path.exists(".env"):
@@ -99,15 +99,25 @@ def load_env():
def load_logger(): def load_logger():
logger.remove() # 移除默认配置 logger.remove() # 移除默认配置
logger.add( if os.getenv("ENVIRONMENT") == "dev":
sys.stderr, logger.add(
format="<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> <fg #777777>|</> <level>{level: <7}</level> <fg " sys.stderr,
"#777777>|</> <cyan>{name:.<8}</cyan>:<cyan>{function:.<8}</cyan>:<cyan>{line: >4}</cyan> <fg " format="<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> <fg #777777>|</> <level>{level: <7}</level> <fg "
"#777777>-</> <level>{message}</level>", "#777777>|</> <cyan>{name:.<8}</cyan>:<cyan>{function:.<8}</cyan>:<cyan>{line: >4}</cyan> <fg "
colorize=True, "#777777>-</> <level>{message}</level>",
level=os.getenv("LOG_LEVEL", "INFO"), # 根据环境设置日志级别默认为INFO colorize=True,
filter=lambda record: "nonebot" not in record["name"] level=os.getenv("LOG_LEVEL", "DEBUG"), # 根据环境设置日志级别默认为DEBUG
) )
else:
logger.add(
sys.stderr,
format="<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> <fg #777777>|</> <level>{level: <7}</level> <fg "
"#777777>|</> <cyan>{name:.<8}</cyan>:<cyan>{function:.<8}</cyan>:<cyan>{line: >4}</cyan> <fg "
"#777777>-</> <level>{message}</level>",
colorize=True,
level=os.getenv("LOG_LEVEL", "INFO"), # 根据环境设置日志级别默认为INFO
filter=lambda record: "nonebot" not in record["name"]
)

View File

@@ -0,0 +1,10 @@
from nonebot import get_app
from .api import router
from loguru import logger
# 获取主应用实例并挂载路由
app = get_app()
app.include_router(router, prefix="/api")
# 打印日志方便确认API已注册
logger.success("配置重载API已注册可通过 /api/reload-config 访问")

View File

@@ -0,0 +1,17 @@
from fastapi import APIRouter, HTTPException
from src.plugins.chat.config import BotConfig
import os
# 创建APIRouter而不是FastAPI实例
router = APIRouter()
@router.post("/reload-config")
async def reload_config():
try:
bot_config_path = os.path.join(BotConfig.get_config_dir(), "bot_config.toml")
global_config = BotConfig.load_config(config_path=bot_config_path)
return {"message": "配置重载成功", "status": "success"}
except FileNotFoundError as e:
raise HTTPException(status_code=404, detail=str(e))
except Exception as e:
raise HTTPException(status_code=500, detail=f"重载配置时发生错误: {str(e)}")

View File

@@ -0,0 +1,3 @@
import requests
response = requests.post("http://localhost:8080/api/reload-config")
print(response.json())