Skip to main content

API tracking package.

Project description

DRF Debug

A package to tracking your API in django rest framework.

Usage

add tracking.mixins.LoggingMixin to any DRF view to create a instance of APIRequestLog every time the view is called.

# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from tracking.mixins import LoggingMixin

class LoggingView(LoggingMixin, APIView):
    def get(self, request):
        return Response('with logging')

For performance enhancement, explicitly choose methods to be logged using logging_methods attribute:

class LoggingView(LoggingMixin, generics.CreateModelMixin, generics.GenericAPIView):
    logging_methods = ['POST', 'PUT']
    model = ...

Moreover, you could define your own rules by overriding should_log method. If should_log evaluates to True a log is created.

class LoggingView(LoggingMixin, generics.GenericAPIView):
    def should_log(self, request, response):
        """Log only errors"""
        return response.status_code >= 400

You could define your own handling. For example save on an in-memory data structure store, remote logging system etc.

class LoggingView(LoggingMixin, generics.GenericAPIView):
    def handle_log(self, request, response):
        cache.set('my_key', self.log, 86400)

Or you could omit save a request to the database. For example,

class LoggingView(LoggingMixin, generics.GenericAPIView):
    def handle_log(self, request, response):
        """
        Save only very slow requests. Requests that took more than a second.
        """
        if self.log['response_ms'] > 1000:
            super(LoggingMixin, self).handle_log(request, response)

By default drf-debug is hiding the values of those fields ['api', 'token', 'key', 'secret', 'password', 'signature'] You can complete this list with your own list by putting the fields you want to be hidden in the sensitive_fields parameter of your view.

class LoggingView(LoggingMixin, generics.CreateModelMixin, generics.GenericAPIView):
    sensitive_fields = ['password', 'my_secret_field']

Links

Download Source Code: Click Here

My Github Account: Click Here

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drf-debug-1.1.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

drf_debug-1.1.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file drf-debug-1.1.0.tar.gz.

File metadata

  • Download URL: drf-debug-1.1.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for drf-debug-1.1.0.tar.gz
Algorithm Hash digest
SHA256 dcf5a5c05e5cf37e9e5a6448d20e60bafd7f9c5cb1e01f6e6e521a85f5ea174d
MD5 bfdf8adc5a36fc404368e366220db13c
BLAKE2b-256 cd2bccccec81651aaa293fc249f1d09537b799d1852292f0c008a2d936c6df67

See more details on using hashes here.

File details

Details for the file drf_debug-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: drf_debug-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for drf_debug-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 46351bc1e98706be2008ed1fc75dd20341f13907333949c3033a20da1b21fce6
MD5 fc76369be648576d8f75304d142a92ef
BLAKE2b-256 b7567d847df4075be0eec2f6fbb1fb89262e16f434d3d08f0be79ddb9ac2b445

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page