FastAPI框架中将日志和控制台输出保存到文件中

在 FastAPI 框架中,可以使用 Python 的内置 logging 模块来配置日志记录,并将日志输出到文件中,同时也可以将日志输出到控制台。

以下是一个优雅地实现这一功能的示例。

示例代码

首先,确保你已经安装了 FastAPI 和 uvicorn:

pip install fastapi uvicorn

然后,可以创建一个 FastAPI 应用,并配置日志记录:

import logging
from fastapi import FastAPI

app = FastAPI()

# 配置日志
logging.basicConfig(
    level=logging.INFO,  # 设置日志级别
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',  # 日志格式
    handlers=[
        logging.FileHandler("app.log"),  # 将日志输出到文件
        logging.StreamHandler()  # 将日志输出到控制台
    ]
)

# 获取一个日志记录器
logger = logging.getLogger(__name__)

@app.get("/")
def read_root():
    logger.info("Root endpoint was accessed")
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int):
    logger.info(f"Item endpoint accessed with item_id: {item_id}")
    return {"item_id": item_id}

说明

  1. 导入模块: 我们首先导入 FastAPI 和 logging 模块。
  2. 日志配置:
    • 使用 logging.basicConfig() 配置日志输出,包括日志级别、格式、以及输出的目标(文件和控制台)。
    • logging.FileHandler("app.log") 创建一个日志文件,所有的日志信息会被保存到 app.log 文件中。
    • logging.StreamHandler() 将日志输出到控制台。
  3. 获取日志记录器: 使用 logging.getLogger(__name__) 创建一个日志记录器,这样你可以在应用的不同部分记录日志。
  4. 定义路由: 在每个路由处理函数中,使用 logger.info() 记录日志信息。

运行应用

使用以下命令运行 FastAPI 应用:

uvicorn your_file_name:app --reload

确保将 your_file_name 替换为你的 Python 文件名。

结果

访问 http://127.0.0.1:8000/http://127.0.0.1:8000/items/1,将会在控制台和 app.log 文件中看到相应的日志记录。

这样,您就可以优雅且有效地将 FastAPI 应用的日志记录到文件和控制台中。

Leave a Comment

豫ICP备19001387号-1