This commit is contained in:
薇薇安 2026-01-13 21:57:18 +08:00
parent 9160617b8e
commit 6bf4ea7a06
2 changed files with 74 additions and 2 deletions

View File

@ -5,7 +5,9 @@ from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from api.routes import config, trades, stats, dashboard, account from api.routes import config, trades, stats, dashboard, account
import os import os
import logging
from pathlib import Path from pathlib import Path
from logging.handlers import RotatingFileHandler
# 加载.env文件 # 加载.env文件
try: try:
@ -24,6 +26,70 @@ except ImportError:
except Exception: except Exception:
pass pass
# 配置日志
def setup_logging():
"""配置日志系统"""
# 获取日志级别
log_level = os.getenv('LOG_LEVEL', 'INFO').upper()
log_level_map = {
'DEBUG': logging.DEBUG,
'INFO': logging.INFO,
'WARNING': logging.WARNING,
'ERROR': logging.ERROR,
'CRITICAL': logging.CRITICAL
}
level = log_level_map.get(log_level, logging.INFO)
# 创建日志目录
backend_dir = Path(__file__).parent.parent
log_dir = backend_dir / 'logs'
log_dir.mkdir(exist_ok=True)
# 日志文件路径
log_file = log_dir / 'api.log'
# 配置根日志记录器
root_logger = logging.getLogger()
root_logger.setLevel(level)
# 清除现有的处理器
root_logger.handlers.clear()
# 创建格式器
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# 文件处理器(带轮转)
file_handler = RotatingFileHandler(
log_file,
maxBytes=10 * 1024 * 1024, # 10MB
backupCount=5,
encoding='utf-8'
)
file_handler.setLevel(level)
file_handler.setFormatter(formatter)
root_logger.addHandler(file_handler)
# 控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(level)
console_handler.setFormatter(formatter)
root_logger.addHandler(console_handler)
# 设置第三方库的日志级别
logging.getLogger('uvicorn').setLevel(logging.WARNING)
logging.getLogger('uvicorn.access').setLevel(logging.WARNING)
return log_file
# 初始化日志
log_file = setup_logging()
logger = logging.getLogger(__name__)
logger.info(f"日志系统已初始化,日志文件: {log_file}")
logger.info(f"日志级别: {os.getenv('LOG_LEVEL', 'INFO')}")
app = FastAPI( app = FastAPI(
title="Auto Trade System API", title="Auto Trade System API",
version="1.0.0", version="1.0.0",

View File

@ -25,8 +25,14 @@ export CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:3000,http://localhost:5173}
# 创建日志目录 # 创建日志目录
mkdir -p logs mkdir -p logs
# 设置日志级别(如果未设置)
export LOG_LEVEL=${LOG_LEVEL:-INFO}
# 启动服务(后台运行) # 启动服务(后台运行)
nohup uvicorn api.main:app --host 0.0.0.0 --port 8001 > logs/api.log 2>&1 & # 注意Python日志会输出到 logs/api.loguvicorn的访问日志也会输出到同一个文件
nohup uvicorn api.main:app --host 0.0.0.0 --port 8001 --log-level info > logs/uvicorn.log 2>&1 &
echo "后端服务已启动PID: $!" echo "后端服务已启动PID: $!"
echo "日志文件: logs/api.log" echo "Python日志文件: logs/api.log"
echo "Uvicorn日志文件: logs/uvicorn.log"
echo "查看日志: tail -f logs/api.log"