FastAPI 中如何配置日志?

推荐答案

在 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

在示例中,我们同时使用了 FileHandlerStreamHandler,因此日志会同时写入 app.log 文件并输出到控制台。

4. FastAPI 集成

FastAPI 本身并不提供专门的日志配置功能,但它完全兼容 Python 的标准 logging 模块。因此,你可以像在普通 Python 应用中一样配置日志。

在示例中,我们在 FastAPI 应用启动前配置了日志,这样在应用运行期间的所有日志都会按照配置进行处理。

5. 日志记录

在 FastAPI 的路由处理函数中,你可以使用 logging 模块记录日志。例如,在 read_root 函数中,我们使用 logging.info 记录了一条信息日志。

当访问根路径 / 时,日志中会记录一条 INFO 级别的消息,内容为 "Root endpoint accessed"

纠错
反馈