一、FastAPI的安装
参考
【大模型应用开发-FastAPI框架】(一)FastAPI概述和安装-CSDN博客
二、日志记录的重要性
在开发和维护应用程序时,我们需要记录应用程序的运行状态和异常情况,以便分析问题、排查错误和进行性能优化。通过记录日志,我们可以实现以下几个目标:
- 故障排查:当应用程序出现错误或者异常时,可以通过日志信息追踪问题的根源,并进行故障排除和修复。
- 性能优化:通过分析日志信息,我们可以了解应用程序的性能瓶颈,并进行针对性的优化,提高应用程序的性能和响应速度。
- 系统监控:通过监控应用程序的日志信息,我们可以了解应用程序的运行状态,及时发现和处理异常情况,保证应用程序的稳定性和可用性。
三、FastAPI 中的日志记录
FastAPI 使用标准的 Python logging 模块来进行日志记录。我们可以通过配置 logger 来指定日志的级别、格式以及输出位置。在默认情况下,FastAPI 的日志信息会输出到控制台。
下面是一个简单的例子,演示如何在 FastAPI 中记录日志:
import logging
import uvicorn
from fastapi import FastAPI
app = FastAPI()
logging.basicConfig(level=logging.INFO)
@app.get("/")
async def read_root():
logging.info("Hello, world!")
return {"Hello": "World"}
if __name__ == '__main__':
uvicorn.run(app='main:app', host="0.0.0.0", port=9000, reload=True, workers=1)
启动后如图:
在上述例子中,我们通过 logging.basicConfig()
方法将日志记录级别设置为 INFO
。然后,在根路由处理函数中,使用 logging.info()
方法记录日志信息。
四、将日志输出到文件
除了输出到控制台,我们可能还希望将日志信息输出到文件中,以便于管理和追踪。下面是一种在 FastAPI 中将日志信息输出到文件的方法
下面是一个完整的示例,演示如何将日志信息输出到文件中:
import logging
import uvicorn
from logging.handlers import RotatingFileHandler
from fastapi import FastAPI
app = FastAPI()
# 创建 RotatingFileHandler 实例
file_handler = RotatingFileHandler(filename="app.log", maxBytes=1000000, backupCount=10)
# 配置 logger
logger = logging.getLogger()
logger.addHandler(file_handler)
logger.setLevel(logging.INFO)
@app.get("/")
async def read_root():
logger.info("Hello, world!")
return {"Hello": "World"}
if __name__ == '__main__':
uvicorn.run(app='main:app', host="0.0.0.0", port=9000, reload=True, workers=1)
运行访问完后,日志将记录在app.log中
在上述示例中,我们使用 RotatingFileHandler
类将日志信息输出到 app.log
文件中。文件大小超过 1MB 时,会自动创建备份文件,并保留最近的 10 个备份文件。