fastapi项目结构
.
├── main.py # 主应用文件
├── config.py # 配置文件
├── run.py # 启动脚本
├── requirements.txt # 项目依赖
├── .env # 环境变量
├── README.md # 项目说明
├── routers/ # 路由
├── models/ # 数据模型
├── schemas/ # 数据架构
├── repositories/ # 数据库操作
├── services/ # 业务逻辑
└── utils/ # 工具类
# common_logger.py
import logging
from multiprocessing import get_logger
import sys
COLORS = {
"DEBUG": "\033[36m", # cyan
"INFO": "\033[32m", # green
"WARNING": "\033[33m", # yellow
"ERROR": "\033[31m", # red
"CRITICAL": "\033[35m", # magenta
"RESET": "\033[0m",
}
class ColorFormatter(logging.Formatter):
def format(self, record):
# 给 levelname 上色
levelname = record.levelname
record.levelname = f"{COLORS.get(levelname, '')}{levelname}{COLORS['RESET']}"
return super().format(record)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(
ColorFormatter(fmt="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
)
logging.basicConfig(level=logging.INFO, handlers=[handler])
# log = logging.getLogger(__name__)
def get_logger(name):
logger = logging.getLogger(name)
return logger