a
This commit is contained in:
parent
9160617b8e
commit
6bf4ea7a06
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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.log,uvicorn的访问日志也会输出到同一个文件
|
||||||
|
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"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user