irongit
RootAiSec/app/live_logger/middleware.py
33 lines1.3 KBPython
1import datetime
2from threading import Thread
3from live_logger import settings
4from .models import Log
5
6
7class RequestLoggingMiddleware:
8 def __init__(self, get_response):
9 self.get_response = get_response
10
11 def __call__(self, request):
12 # Code to be executed for each request before
13 # the view (and later middleware) are called.
14 # request.log = Log.objects.create(meta=request.META)
15 # Thread(target=Log.objects.create, kwargs={'meta': request.META}).start()
16 for ignore in settings.LIVE_LOGGER_IGNORED_PATHS:
17 if ignore in request.path:
18 return self.get_response(request)
19 request.log = Log(meta=request.META)
20
21 response = self.get_response(request)
22
23 # Code to be executed for each request/response after
24 # the view is called.
25 # request.log.duration = time.time() - start
26 request.log.user = request.user if request.user.is_authenticated else None
27 request.log.start_time = datetime.datetime.now(
28 tz=datetime.timezone.utc)
29 request.log.end_time = datetime.datetime.now(tz=datetime.timezone.utc)
30 request.log.status_code = response.status_code
31 Thread(target=request.log.save, daemon=True).start()
32
33 return response