推荐答案
在 FastAPI 中配置日志可以通过 Python 的标准 logging
模块来实现。以下是一个简单的配置示例:
-- -------------------- ---- ------- ------ ------- ---- ------- ------ ------- - ---- -------------------- ------------------- ------------------- - -------- - ------------- - ------------- ---------- ------------------------------- ----------------------- - - --- - --------- ------------- --- ------------ ------------------ -------- ---------- ------ ----------- ------ -------
在这个示例中,我们使用 logging.basicConfig
来配置日志级别、格式和输出位置。日志级别设置为 INFO
,格式包括时间、日志名称、日志级别和消息。日志会同时输出到文件 app.log
和控制台。
本题详细解读
1. 日志级别
日志级别决定了哪些日志消息会被记录。常见的日志级别有:
DEBUG
: 详细的调试信息。INFO
: 确认程序按预期运行。WARNING
: 表示潜在的问题。ERROR
: 更严重的问题,程序可能无法执行某些功能。CRITICAL
: 严重的错误,程序可能无法继续运行。
在示例中,我们使用 INFO
级别,这意味着 INFO
及以上级别的日志消息(如 WARNING
, ERROR
, CRITICAL
)都会被记录。
2. 日志格式
日志格式决定了日志消息的输出样式。常用的格式字段包括:
%(asctime)s
: 日志记录的时间。%(name)s
: 日志记录器的名称。%(levelname)s
: 日志级别。%(message)s
: 日志消息。
在示例中,我们使用了 "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
格式,这样每条日志消息都会包含时间、日志名称、级别和消息。
3. 日志输出位置
日志可以输出到多个位置,常见的有:
- 文件:使用
logging.FileHandler
。 - 控制台:使用
logging.StreamHandler
。
在示例中,我们同时使用了 FileHandler
和 StreamHandler
,因此日志会同时写入 app.log
文件并输出到控制台。
4. FastAPI 集成
FastAPI 本身并不提供专门的日志配置功能,但它完全兼容 Python 的标准 logging
模块。因此,你可以像在普通 Python 应用中一样配置日志。
在示例中,我们在 FastAPI 应用启动前配置了日志,这样在应用运行期间的所有日志都会按照配置进行处理。
5. 日志记录
在 FastAPI 的路由处理函数中,你可以使用 logging
模块记录日志。例如,在 read_root
函数中,我们使用 logging.info
记录了一条信息日志。
@app.get("/") def read_root(): logging.info("Root endpoint accessed") return {"message": "Hello World"}
当访问根路径 /
时,日志中会记录一条 INFO
级别的消息,内容为 "Root endpoint accessed"
。