Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果django rest框架中出现500个错误,如何记录每个请求和响应?_Django_Logging_Error Handling_Django Rest Framework_Django Logging - Fatal编程技术网

如果django rest框架中出现500个错误,如何记录每个请求和响应?

如果django rest框架中出现500个错误,如何记录每个请求和响应?,django,logging,error-handling,django-rest-framework,django-logging,Django,Logging,Error Handling,Django Rest Framework,Django Logging,我将django用于RESTAPI 我在settings.py中有一个日志代码 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '%(asctime)s %(levelname)s %(module)s %(process)d %(thread)d %(message)s'

我将django用于RESTAPI

我在settings.py中有一个日志代码

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(asctime)s %(levelname)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(asctime)s %(levelname)s %(message)s'
        },
    },
    'handlers': {
        'file': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'filename': '/tmp/OAuthLog_Production.log',
            'formatter': 'simple'
        },
    },
    'loggers': {
        'oauth': {
            'handlers': ['file'],
            'level': 'ERROR',
            'propagate': True,
        }
    },
}
在views.py中,每当发生任何异常时都会这样使用它

import logging
logger = logging.getLogger("oauth")
      except Exception as ex:
            logger.exception(ex)
            response = helper.generateStandardResponse(ResponseCodes.exception_in_finding_user,
                                                       "Exception in finding user", data, False);
            logger.info("get_profile_details : Exception in finding user")
            return Response(response, status=status.HTTP_200_OK)
因为,我使用Elastic beanstalk托管应用程序,所以我不会返回500状态代码。 我将返回自定义响应

即使在这之后,应用程序返回的错误也只有500个。 而这些都是导致环境“退化”的原因

我检查了我的日志文件,但它有这样的错误

2019-11-23 23:53:10,600 ERROR UserProfile matching query does not exist.
Traceback (most recent call last):
  File "/opt/python/current/app/profiles/views.py", line 514, in get_profile_details
    user_profile_detail = UserProfile.objects.get(mobile1=mobile, account_type=account_type)
  File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/db/models/query.py", line 385, in get
    self.model._meta.object_name
profiles.models.DoesNotExist: UserProfile matching query does not exist.
我不明白为什么会有500个错误

如何记录导致500个错误的每个请求和响应


这样我就可以调试并找出是什么输入和客户端导致了这些问题,并解决它们。

您可以编写一个中间件来捕获所有未捕获的异常并返回适当的响应,或者按照所述实现自定义异常处理。

您可以编写一个中间件来捕获所有未捕获的异常并返回适当的响应或者按照说明实施自定义异常处理

文档中没有提到如何记录请求和响应。你能分享一些例子吗?@AmolChakane我不知道你的意思,但如果你是在谈论我在文档中链接页面的第二个选项,那么响应将在自定义处理程序中获取,你可以随意记录。至于请求,您的初始问题没有提到这一点,但是如果您想记录它,那么使用中间件选项,因为它同时处理请求和响应。我的初始问题提到了记录请求。我能够使用自定义异常处理程序记录请求。非常感谢!哦,我刚刚注意到你的问题也提到了这个要求。我很高兴你能解决这个问题。祝你好运文档中没有提到如何记录请求和响应。你能分享一些例子吗?@AmolChakane我不知道你的意思,但如果你是在谈论我在文档中链接页面的第二个选项,那么响应将在自定义处理程序中获取,你可以随意记录。至于请求,您的初始问题没有提到这一点,但是如果您想记录它,那么使用中间件选项,因为它同时处理请求和响应。我的初始问题提到了记录请求。我能够使用自定义异常处理程序记录请求。非常感谢!哦,我刚刚注意到你的问题也提到了这个要求。我很高兴你能解决这个问题。祝你好运