首页 > 解决方案 > 将 FastAPI 中的请求记录到项目目录中的特定文件中

问题描述


我正在为 FastAPI python 上的字典构建一个 API。
我是这个框架的新手,但我有点喜欢它,所以我想尝试一下。
作为要求的一部分,其中一个要求是将每个 HTTP 请求记录到我的项目中的特定文件 .log 文件中,而不是在服务器端。
我尝试使用中间件,但我无法弄清楚。所以如果你们对如何做到这一点有任何想法,请帮助我,因为我找不到关于这个主题的太多信息。

因此,在我的 API 端点(如 mysite.com/words)中生成的每个请求,我都必须将其记录在一个文件中,包括时间戳和其他一些不重要的信息,因为这是细节的一部分,但我想要的只是能够获取每个请求并将它们记录到文本文件中..

先感谢您..

标签: pythonloggingrequestpython-requestsfastapi

解决方案


您可以简单地logging在 Python 中使用本机模块。例如:

#logger_config.py
import logging


def setup_logger(name) -> logging.Logger:
    FORMAT = "[%(name)s %(module)s:%(lineno)s]\n\t %(message)s \n"
    TIME_FORMAT = "%d.%m.%Y %I:%M:%S %p"

    logging.basicConfig(
        format=FORMAT, datefmt=TIME_FORMAT, level=logging.DEBUG, filename="my-project-root/path/log-file-name.log"
    )

    logger = logging.getLogger(name)
    return logger


# in any file that import fn setup_logger from the above 'logger_config.py', you can set up local logger like:
local_logger = setup_logger(__name__)

local_logger.info(
    f"I am writing to file {FILENAME}. If that file did not exist, it would be automatically created. Here, you can change me to write about the call to a specific route function etc."
)

推荐阅读