Skip to content

Commit

Permalink
added a request time logging middleware (#2361)
Browse files Browse the repository at this point in the history
added a request time logging middleware (#2361)

---------

Co-authored-by: Vignesh Hari <[email protected]>
  • Loading branch information
DraKen0009 and vigneshhari authored Sep 22, 2024
1 parent 0ee6d8a commit d3a0162
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
15 changes: 15 additions & 0 deletions config/middleware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import logging
import time


class RequestTimeLoggingMiddleware:
def __init__(self, get_response):
self.get_response = get_response
self.logger = logging.getLogger("time_logging_middleware")

def __call__(self, request):
request.start_time = time.time()
response = self.get_response(request)
duration = time.time() - request.start_time
self.logger.info(f"Request to {request.path} took {duration:.4f} seconds")
return response
24 changes: 22 additions & 2 deletions config/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,10 @@
"care.audit_log.middleware.AuditLogMiddleware",
]

# add RequestTimeLoggingMiddleware based on the environment variable
if env.bool("ENABLE_REQUEST_TIME_LOGGING", default=False):
MIDDLEWARE.insert(0, "config.middleware.RequestTimeLoggingMiddleware")

# STATIC
# ------------------------------------------------------------------------------
# https://docs.djangoproject.com/en/dev/ref/settings/#static-files
Expand Down Expand Up @@ -323,14 +327,30 @@
"verbose": {
"format": "%(levelname)s %(asctime)s %(module)s "
"%(process)d %(thread)d %(message)s"
}
},
"request_time": {
"format": "INFO %(asctime)s %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
},
"handlers": {
"console": {
"level": "DEBUG",
"class": "logging.StreamHandler",
"formatter": "verbose",
}
},
"time_logging": {
"level": "INFO",
"class": "logging.StreamHandler",
"formatter": "request_time",
},
},
"loggers": {
"time_logging_middleware": {
"handlers": ["time_logging"],
"level": "INFO",
"propagate": False,
},
},
"root": {"level": "INFO", "handlers": ["console"]},
}
Expand Down

0 comments on commit d3a0162

Please sign in to comment.