Skip to content

Instantly share code, notes, and snippets.

@Ruhshan
Last active November 25, 2020 07:33
Show Gist options
  • Save Ruhshan/636c2c4c49988fc9cfefc78721d9d79a to your computer and use it in GitHub Desktop.
Save Ruhshan/636c2c4c49988fc9cfefc78721d9d79a to your computer and use it in GitHub Desktop.
from functools import wraps
class Loggable:
def __init__(self, view_class, log_exception=True):
self.view_func = view_class
self.logger = self._get_logger()
def as_view(self, *args, **kwargs):
self.view_func = self.view_func.as_view(*args, **kwargs)
@wraps(self.view_func)
def _wrapped_view_func(request, *args, **kwargs):
reqMessage = {'method': request.method,
'path': request.path,
'username': request.user.username
}
self.logger.info({'request': reqMessage})
try:
response = self.view_func(request, *args, **kwargs)
resMessage = {
'username': request.user.username,
'status_code': response.status_code,
}
return response
except Exception as e:
resMessage = {
'username': request.user.username,
'exception': e
}
self.logger.exception({'exception': resMessage})
raise e
return _wrapped_view_func
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment