将请求记录到 django-rest-framework

2023-12-27

出于调试目的,我想使用 Django 的日志机制来记录每个传入请求“到达”django-rest-framework 的门口时的情况。

Django 通过以下方式提供其请求的日志记录(仅“警告”日志级别及以上)(来自 settings.py 中的 LOGGING 部分):

'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': False,
 },

我希望实现这样的目标(注意:日志级别为 DEBUG):

'rest_framework.request': {
        'handlers': ['logfile'],
        'level': 'DEBUG',
        'propagate': False,
 },

有什么办法可以做到这一点without将记录器嵌入到 DRF 的源代码中?
DRF 中是否有某种我不知道的“记录后端”选项?


我做了一个通用的RequestLogMiddleware可以挂接到任何 DjangoView using decorator_from_middleware.

request_log/middleware.py

import socket
import time


class RequestLogMiddleware(object):
    def process_request(self, request):
        request.start_time = time.time()

    def process_response(self, request, response):

        if response['content-type'] == 'application/json':
            if getattr(response, 'streaming', False):
                response_body = '<<<Streaming>>>'
            else:
                response_body = response.content
        else:
            response_body = '<<<Not JSON>>>'

        log_data = {
            'user': request.user.pk,

            'remote_address': request.META['REMOTE_ADDR'],
            'server_hostname': socket.gethostname(),

            'request_method': request.method,
            'request_path': request.get_full_path(),
            'request_body': request.body,

            'response_status': response.status_code,
            'response_body': response_body,

            'run_time': time.time() - request.start_time,
        }

        # save log_data in some way

        return response

request_log/mixins.py

from django.utils.decorators import decorator_from_middleware

from .middleware import RequestLogMiddleware


class RequestLogViewMixin(object):
    """
    Adds RequestLogMiddleware to any Django View by overriding as_view.
    """

    @classmethod
    def as_view(cls, *args, **kwargs):
        view = super(RequestLogViewMixin, cls).as_view(*args, **kwargs)
        view = decorator_from_middleware(RequestLogMiddleware)(view)
        return view

my_django_rest_api/views.py

from rest_framework import generics

from ...request_log.mixins import RequestLogViewMixin

class SomeListView(
    RequestLogViewMixin,
    generics.ListAPIView
):
    ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将请求记录到 django-rest-framework 的相关文章

  • Python 切片对象和 __getitem__

    python 中是否有内部的东西来处理传递给的参数 getitem 不同 并自动转换start stop step构造成切片 这是我的意思的演示 class ExampleClass object def getitem self args
  • 如何使用 Python 3 绕过 HTTP Error 403: Forbidden with urllib.request

    您好 不是每次都这样 但有时在尝试访问 LSE 代码时 我会收到每一个烦人的 HTTP 错误 403 禁止消息 任何人都知道我如何仅使用标准 python 模块来克服这个问题 遗憾的是没有漂亮的汤 import urllib request
  • 此 TypeError 消息中提到的“代码对象”是什么?

    在尝试使用Python时exec声明 我收到以下错误 TypeError exec arg 1 must be a string file or code object 我不想传递字符串或文件 但什么是代码对象 如何创建一个 创建代码对象的
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • Virtualenv 在 OS X Yosemite 上失败并出现 OSError

    我最近更新到 OSX Yosemite 现在无法使用virtualenv pip 每当我执行 virtualenv env 它抛出一个 OSError Command Users administrator ux env bin pytho
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 反编译Python 3.9.2的PYC文件[重复]

    这个问题在这里已经有答案了 目前 我有一个 3 9 2 版本的 python 的 PYC 文件 P S 这适用于所有 3 9 及更高版本 我正在尝试反编译 PYC 文件 但它显示错误 因为 uncompyle6 或者更确切地说 新版本 de
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • pandas 相当于 np.where

    np where具有向量化 if else 的语义 类似于 Apache Spark 的when otherwise数据帧方法 我知道我可以使用np where on pandas Series but pandas通常定义自己的 API
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 为什么 __dict__ 和 __weakref__ 类从未在 Python 中重新定义?

    类创建似乎从来没有re 定义 dict and weakref class属性 即 如果它们已经存在于超类的字典中 则它们不会添加到其子类的字典中 但始终re 定义 doc and module class属性 为什么 gt gt gt c
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar

随机推荐

  • 在屏障实现中将代码从顺序一致性更改为不太严格的排序

    我遇到了这段代码 用于简单地实现屏障 对于无法使用的代码std experimental barrier在 C 17 中或std barrier在 C 20 中 在 C Concurrency in Action 一书中 编辑 屏障是一种同
  • 我们如何在azure应用程序洞察中显示数据库查询

    我们的应用程序正在使用天蓝色的应用程序见解 我读到的是 使用应用程序洞察端到端跟踪 我们甚至可以获得在数据库中执行的查询以及该查询花费了多少时间 但如屏幕截图所示 Azure App Insights 显示有 3 个对数据库的调用 但不是这
  • 将每个分隔符的值拆分为单独的行 - 批处理

    我正在尝试使用 delimiter 将 csv 文件的值拆分为单独的行 作为拆分点 IE csv file video1 video2 video3 video4 video5 video6 Preferred output video1
  • 获取 Twitter 请求令牌失败

    我按照以下说明进行操作http dev twitter com pages auth request token http dev twitter com pages auth request token 并开发了一个c 类来进行OAuth
  • 如何取消Java 8的完整未来?

    我正在玩 Java 8 completable futures 我有以下代码 CountDownLatch waitLatch new CountDownLatch 1 CompletableFuture
  • redshift - 如何插入表生成的时间序列

    我正在尝试在 Redshift 中生成时间序列并插入表中 但没有成功 到目前为止我已经尝试过 insert into date dateid date SELECT to char datum YYYYMMDD int AS dateid
  • 有没有办法判断是否显示软键盘?

    有没有办法判断软键盘是否显示在活动中 I tried InputMethodManager manager InputMethodManager getSystemService getApplicationContext INPUT ME
  • Android Camera2 API - 检测我们何时获得焦点

    因此 我设法用旧相机按照我想要的方式创建了我想要的功能 使用 mCamera autoFocus autoFocusCallback 我检测何时获得焦点并在预览模式下运行所需的代码 现在我很难掌握如何在camera2 API 中执行相同的操
  • 完整的日历适合容器并隐藏滚动

    我无法弄清楚如何缩放 fullcalendar 以适应它的父容器 我想在单个页面上为用户显示周视图 而无需滚动 因此他们可以快速查看一周的项目 如果我需要使文本变小 插槽高度变小等 我没问题 但我只是不确定如何根据浏览器窗口的大小动态地执行
  • 在 C# 中使用“out”关键字返回多个值

    我目前正在努力理解它的含义 当它说使用 out 关键字我们能够return多个值 例如 来自 msdn 站点 https msdn microsoft com en us library ee332485 aspx https msdn m
  • Python 中的通用命令模式和命令调度模式

    我正在寻找一个CommandPython 中的模式实现 根据维基百科 http en wikipedia org wiki Command pattern 命令模式是一种设计 对象用于的模式 代表并封装所有 调用方法所需的信息 稍后 我唯一
  • JS 对象文字和 JSON 字符串有什么区别?

    我对人们所说的对象文字 JSON JavaScript 对象的确切含义感到困惑 对我来说 它们看起来很相似 foo bar bar baz AFAIK 上面是对象文字 json 以及 javascript 对象 不是吗 对象字面量和 jso
  • 如何确保打印偶数奇数的两个线程在此实现中保持先偶后奇的顺序?

    我创建了两个可运行的作业 PrintEvenNumbersJob 和 PrintOddNumbersJob 并生成了两个线程来执行这些作业 这似乎工作得很好 但我对这个实施感到有些可疑 我可以对这个实施有一些意见和建议吗 我在这个实现中看到
  • Python 是强类型的吗?

    我遇到过一些链接 说 Python 是一种强类型语言 但是 我认为在强类型语言中你不能这样做 bob 1 bob bob 我认为强类型语言不接受运行时的类型更改 也许我对强 弱类型的定义错误 或过于简单 那么 Python 是强类型语言还是
  • jQuery 在 AJAX 请求时同时发送 GET 和 POST 参数

    如何使用 jQuery AJAX 请求同时发送 GET 和 POST 参数 我正在尝试添加do ajax id ID to url 但结果请求仅打磨至sss php没有查询字符串 获取部分 谢谢 ajax url sss php do aj
  • 如何在 WIQL 工作项中获取层次结构

    我在 TFS 中有一个像这样的层次结构 其中 1 个功能可以有 N 个产品待办事项列表项目 而单个产品产品待办列表项目可以有 N 个任务 错误 树结构 特点1 gt PB1 gt 任务1 任务2 任务3 my Query string qu
  • 制作 Ubuntu 可执行文件

    我使用 gcc 编译器编写了一个 C 程序 现在它没有 GUI 组件 我正在使用 makefile 编译它并在终端中运行它 我需要部署它 以便可执行文件是独立的 我希望可执行文件有一个图标 单击时在终端中启动程序 谁能告诉我该怎么做 基础
  • SonarQube 中的质量门故障不会导致 Teamcity 中的构建失败

    我在 TeamCity 中建立了一个 Build 项目 并将 Sonarqube 与其集成 该项目正在构建 甚至在 SonarQube 控制台中成功发布报告 但当质量门失败时 它并不会破坏构建 我搜索并阅读了有关构建断路器的信息 但它已经受
  • 如何根据浏览器宽度动态调整CSS样式表?

    我们正在开发一款开源网络应用程序 供世界各地的艺术教师一起工作 我们需要一个漂亮的网站 它可以根据浏览器的活动宽度进行自我调整 就像 google org 或 barackobama com 做得很好一样 我们可以检测浏览器 操作系统等 但
  • 将请求记录到 django-rest-framework

    出于调试目的 我想使用 Django 的日志机制来记录每个传入请求 到达 django rest framework 的门口时的情况 Django 通过以下方式提供其请求的日志记录 仅 警告 日志级别及以上 来自 settings py 中