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