出于调试的目的,我想使用Django的日志记录机制,在每个传入请求“到达”Django rest框架的门口时对其进行日志记录。
Djagno以以下方式(从settings.py中的logging部分)提供对其请求的日志记录(仅“warning”日志级别及更高级别):
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': False,
},
我希望实现这样的功能(注意:日志级别是DEBUG):
'rest_framework.request': {
'handlers': ['logfile'],
'level': 'DEBUG',
'propagate': False,
},
有没有一种方法可以在不将记录器嵌入DRF源代码的情况下完成这项工作?
DRF中是否有某种我不知道的“日志后端”选项?
我做了一个泛型
RequestLogMiddleware
,可以用decorator_from_middleware
连接到任何DjangoView
。请求日志/middleware.py
请求日志/mixins.py
my_django_rest_api/views.py
我发现,最好、最灵活的方法是通过decorator添加日志记录。我只是将decorator添加到每个要记录请求的函数(post、get)中,而不是将其作为overal view类的一部分。更多地控制记录的内容。这些修饰符接受传入的请求对象(arg[1]),然后将请求对象的部分记录到文件中。
请参见https://github.com/slogan621/tscharts/commit/39ed479b04b7077f128774d3a203a86d6f68f03e了解执行此操作所需的模板(commit显示了将日志记录线程化到现有文件日志记录方案所需的settings.py更改,以及decorator和示例用法)。
重写^{} 方法以添加日志记录。
相关问题 更多 >
编程相关推荐