feat(light): 添加信息灯牌功能及相关组件
- 新增light路由模块,提供灯牌脚本和答案的API接口 - 添加MongoDB连接工具类,支持异步和同步操作 - 实现灯牌服务层,包含数据缓存逻辑 - 移除数据库日志功能,简化日志模块 - 更新依赖项,添加starlette、anyio等MongoDB相关包
This commit is contained in:
@@ -3,14 +3,10 @@ import os
|
||||
import logging
|
||||
import traceback
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
# 将项目根目录添加到 Python 路径中,确保可以正确导入项目模块
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
||||
|
||||
from src.db.database import get_db
|
||||
from src.db.models import Log
|
||||
|
||||
# 配置基础日志设置
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
@@ -20,61 +16,6 @@ logging.basicConfig(
|
||||
# 创建模块级日志记录器
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def log_to_database(
|
||||
level: str,
|
||||
message: str,
|
||||
module: str,
|
||||
function: Optional[str] = None,
|
||||
traceback_info: Optional[str] = None,
|
||||
request_url: Optional[str] = None,
|
||||
request_method: Optional[str] = None,
|
||||
user_agent: Optional[str] = None,
|
||||
ip_address: Optional[str] = None,
|
||||
user_id: Optional[int] = None
|
||||
):
|
||||
"""
|
||||
将日志信息保存到数据库
|
||||
|
||||
参数:
|
||||
- level: 日志级别 (INFO, WARNING, ERROR, DEBUG)
|
||||
- message: 日志消息内容
|
||||
- module: 产生日志的模块名
|
||||
- function: 产生日志的函数名(可选)
|
||||
- traceback_info: 异常堆栈信息(可选)
|
||||
- request_url: 请求URL(可选)
|
||||
- request_method: 请求方法(可选)
|
||||
- user_agent: 用户代理信息(可选)
|
||||
- ip_address: IP地址(可选)
|
||||
- user_id: 用户ID(可选)
|
||||
"""
|
||||
try:
|
||||
# 获取数据库会话
|
||||
db_generator = get_db()
|
||||
db = next(db_generator)
|
||||
|
||||
# 创建日志条目对象
|
||||
log_entry = Log(
|
||||
level=level,
|
||||
message=message,
|
||||
module=module,
|
||||
function=function,
|
||||
traceback=traceback_info,
|
||||
request_url=request_url,
|
||||
request_method=request_method,
|
||||
user_agent=user_agent,
|
||||
ip_address=ip_address,
|
||||
user_id=user_id
|
||||
)
|
||||
|
||||
# 保存到数据库
|
||||
db.add(log_entry)
|
||||
db.commit()
|
||||
db.refresh(log_entry)
|
||||
db.close()
|
||||
except Exception as e:
|
||||
# 如果数据库记录失败,至少打印到控制台
|
||||
logger.error(f"Failed to log to database: {str(e)}")
|
||||
|
||||
def capture_exception(
|
||||
exception: Exception,
|
||||
module: str,
|
||||
@@ -86,7 +27,7 @@ def capture_exception(
|
||||
user_id: Optional[int] = None
|
||||
):
|
||||
"""
|
||||
捕获并记录异常信息
|
||||
捕获并记录异常信息到控制台
|
||||
|
||||
参数:
|
||||
- exception: 捕获到的异常对象
|
||||
@@ -101,26 +42,12 @@ def capture_exception(
|
||||
# 获取异常堆栈信息
|
||||
tb_str = ''.join(traceback.format_exception(type(exception), exception, exception.__traceback__))
|
||||
|
||||
# 记录错误日志到数据库和控制台
|
||||
log_to_database(
|
||||
level="ERROR",
|
||||
message=str(exception),
|
||||
module=module,
|
||||
function=function,
|
||||
traceback_info=tb_str,
|
||||
request_url=request_url,
|
||||
request_method=request_method,
|
||||
user_agent=user_agent,
|
||||
ip_address=ip_address,
|
||||
user_id=user_id
|
||||
)
|
||||
|
||||
# 同时打印到控制台
|
||||
# 打印到控制台
|
||||
logger.error(f"[{module}] {str(exception)}", exc_info=True)
|
||||
|
||||
def info(message: str, module: str, function: Optional[str] = None):
|
||||
"""
|
||||
记录INFO级别日志
|
||||
记录INFO级别日志到控制台
|
||||
|
||||
参数:
|
||||
- message: 日志消息内容
|
||||
@@ -128,11 +55,10 @@ def info(message: str, module: str, function: Optional[str] = None):
|
||||
- function: 产生日志的函数名(可选)
|
||||
"""
|
||||
logger.info(f"[{module}] {message}")
|
||||
log_to_database("INFO", message, module, function)
|
||||
|
||||
def warning(message: str, module: str, function: Optional[str] = None):
|
||||
"""
|
||||
记录WARNING级别日志
|
||||
记录WARNING级别日志到控制台
|
||||
|
||||
参数:
|
||||
- message: 日志消息内容
|
||||
@@ -140,11 +66,10 @@ def warning(message: str, module: str, function: Optional[str] = None):
|
||||
- function: 产生日志的函数名(可选)
|
||||
"""
|
||||
logger.warning(f"[{module}] {message}")
|
||||
log_to_database("WARNING", message, module, function)
|
||||
|
||||
def error(message: str, module: str, function: Optional[str] = None):
|
||||
"""
|
||||
记录ERROR级别日志
|
||||
记录ERROR级别日志到控制台
|
||||
|
||||
参数:
|
||||
- message: 日志消息内容
|
||||
@@ -152,16 +77,14 @@ def error(message: str, module: str, function: Optional[str] = None):
|
||||
- function: 产生日志的函数名(可选)
|
||||
"""
|
||||
logger.error(f"[{module}] {message}")
|
||||
log_to_database("ERROR", message, module, function)
|
||||
|
||||
def debug(message: str, module: str, function: Optional[str] = None):
|
||||
"""
|
||||
记录DEBUG级别日志
|
||||
记录DEBUG级别日志到控制台
|
||||
|
||||
参数:
|
||||
- message: 日志消息内容
|
||||
- module: 产生日志的模块名
|
||||
- function: 产生日志的函数名(可选)
|
||||
"""
|
||||
logger.debug(f"[{module}] {message}")
|
||||
log_to_database("DEBUG", message, module, function)
|
||||
logger.debug(f"[{module}] {message}")
|
||||
Reference in New Issue
Block a user