diff --git a/fyle_xero_api/logging_middleware.py b/fyle_xero_api/logging_middleware.py index 9fb5391b..a0c43c0c 100644 --- a/fyle_xero_api/logging_middleware.py +++ b/fyle_xero_api/logging_middleware.py @@ -1,3 +1,4 @@ +import json import logging import traceback @@ -5,6 +6,7 @@ from django.http import HttpResponse logger = logging.getLogger(__name__) +logger.level = logging.INFO class ErrorHandlerMiddleware: @@ -25,3 +27,21 @@ def process_exception(self, request, exception): logger.error(str(message).replace("\n", "")) return HttpResponse("Error processing the request.", status=500) + + +class LogPostRequestMiddleware: + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + if request.method in ['POST', 'PUT']: + try: + body_unicode = request.body.decode('utf-8') + request_body = json.loads(body_unicode) + logger.info("POST request to %s: %s", request.path, request_body) + except (json.JSONDecodeError, UnicodeDecodeError): + logger.warning("Failed to decode POST request body for %s", request.path) + except Exception as e: + logger.info('Something went wrong when logging post call - %s', e) + response = self.get_response(request) + return response diff --git a/fyle_xero_api/settings.py b/fyle_xero_api/settings.py index b21b5047..2845ff44 100644 --- a/fyle_xero_api/settings.py +++ b/fyle_xero_api/settings.py @@ -58,6 +58,7 @@ ] MIDDLEWARE = [ + "fyle_xero_api.logging_middleware.LogPostRequestMiddleware", "request_logging.middleware.LoggingMiddleware", "fyle_xero_api.logging_middleware.ErrorHandlerMiddleware", "corsheaders.middleware.CorsMiddleware", @@ -148,7 +149,7 @@ LOGGING = { "version": 1, - "disable_existing_loggers": True, + "disable_existing_loggers": False, "formatters": { "verbose": { "format": "{levelname} %s {asctime} {module} {message} " % SERVICE_NAME, @@ -158,6 +159,10 @@ "format": "request {levelname} %s {asctime} {message}" % SERVICE_NAME, "style": "{", }, + "standard": { + "format": "{levelname} %s {asctime} {name} {message}" % SERVICE_NAME, + "style": "{", + }, }, "handlers": { "debug_logs": { @@ -170,6 +175,10 @@ "stream": sys.stdout, "formatter": "requests", }, + "console": { + "class": "logging.StreamHandler", + "formatter": "standard", + }, }, "loggers": { "django": { @@ -200,6 +209,11 @@ "handlers": ["debug_logs"], "propagate": True }, + "xerosdk.apis.api_base": { + "handlers": ["console"], + "level": "INFO", + "propagate": True + }, }, } diff --git a/requirements.txt b/requirements.txt index b81bcd5a..f8b93c4b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,7 +17,7 @@ djangorestframework==3.11.2 django-sendgrid-v5==1.2.0 enum34==1.1.10 future==0.18.2 -fyle==0.37.0 +fyle==0.37.2 fyle-accounting-mappings==1.34.8 fyle-integrations-platform-connector==1.38.4 fyle-rest-auth==1.7.2 @@ -41,7 +41,7 @@ Unidecode==1.1.2 urllib3==1.26.11 wcwidth==0.1.8 wrapt==1.12.1 -xerosdk==0.14.1 +xerosdk==0.14.2 pytest==7.1.2 pytest-cov==3.0.0 pytest-django==4.5.2