v3接口restful风格,规范化接口;添加mcp服务器;新增log模块
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
import logging
|
||||
|
||||
# 获取当前模块的专用 Logger
|
||||
# __name__ 会自动识别为 "backend.services.crawler_service" 这样的路径
|
||||
logger = logging.getLogger(__name__)
|
||||
class Settings(BaseSettings):
|
||||
"""
|
||||
系统配置类
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
from sqlalchemy import create_engine, MetaData, Table
|
||||
from pgvector.sqlalchemy import Vector
|
||||
from .config import settings
|
||||
import logging
|
||||
|
||||
# 获取当前模块的专用 Logger
|
||||
# __name__ 会自动识别为 "backend.services.crawler_service" 这样的路径
|
||||
logger = logging.getLogger(__name__)
|
||||
class Database:
|
||||
"""
|
||||
数据库单例类
|
||||
@@ -30,9 +34,9 @@ class Database:
|
||||
self.tasks = Table('crawl_tasks', self.metadata, autoload_with=self.engine)
|
||||
self.queue = Table('crawl_queue', self.metadata, autoload_with=self.engine)
|
||||
self.chunks = Table('knowledge_chunks', self.metadata, autoload_with=self.engine)
|
||||
print("[INFO] Database tables reflected successfully.")
|
||||
logger.info("Database tables reflected successfully.")
|
||||
except Exception as e:
|
||||
print(f"[ERROR] Failed to reflect tables: {e}")
|
||||
logger.error(f"Failed to reflect tables: {e}")
|
||||
|
||||
# 全局数据库实例
|
||||
db = Database()
|
||||
24
backend/core/logger.py
Normal file
24
backend/core/logger.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# backend/core/logger.py
|
||||
import logging
|
||||
import sys
|
||||
|
||||
def setup_logging(level=logging.INFO):
|
||||
"""
|
||||
全局日志配置
|
||||
关键点:强制将日志输出到 sys.stderr,防止污染 sys.stdout 导致 MCP 协议崩溃。
|
||||
"""
|
||||
# 定义日志格式:时间 - 模块名 - 级别 - 内容
|
||||
log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
||||
|
||||
# 配置根记录器
|
||||
logging.basicConfig(
|
||||
level=level,
|
||||
format=log_format,
|
||||
handlers=[
|
||||
# 【绝对关键】使用 StreamHandler(sys.stderr)
|
||||
# 这样日志会走标准错误通道,不会干扰 MCP 的标准输出通信
|
||||
logging.StreamHandler(sys.stderr)
|
||||
],
|
||||
# 强制重新配置,防止被第三方库覆盖
|
||||
force=True
|
||||
)
|
||||
Reference in New Issue
Block a user