python - 将 FastAPI 中的请求记录到项目目录中的特定文件中
问题描述
我正在为 FastAPI python 上的字典构建一个 API。
我是这个框架的新手,但我有点喜欢它,所以我想尝试一下。
作为要求的一部分,其中一个要求是将每个 HTTP 请求记录到我的项目中的特定文件 .log 文件中,而不是在服务器端。
我尝试使用中间件,但我无法弄清楚。所以如果你们对如何做到这一点有任何想法,请帮助我,因为我找不到关于这个主题的太多信息。
因此,在我的 API 端点(如 mysite.com/words)中生成的每个请求,我都必须将其记录在一个文件中,包括时间戳和其他一些不重要的信息,因为这是细节的一部分,但我想要的只是能够获取每个请求并将它们记录到文本文件中..
先感谢您..
解决方案
您可以简单地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."
)
推荐阅读
- javascript - 我正在尝试使用 .push() 保存多个值,但我得到了 '{}'
- php - 如何在输入日期html中设置今天的日期
- angular - 如果库导入另一个启用了常春藤的库,Angular 9 无法在启用了常春藤的库上运行故事书
- javascript - 如何监视(使用 Jest)酶中的子组件方法?
- django - 是否建议在 Google Cloud Platform 上为新的 Django 项目安装和配置 UFW?
- python - 排除某种类型的类型提示
- python - 使用 plotly 绘制大点云会产生一个空白图
- wordpress - glob 函数不适用于 Wordpress https 子主题激活网站中的 get_stylesheet_directory() 函数
- spring - Spring Boot 和 Mongo - findById 仅适用于 ObjectID 而不是 String 的 Id
- django - 如何在 django 模板中为每张卡片切换设计