django-vue-admin 日志中间件

373 阅读2分钟

日志中间件

settings.py 文件设置

中间件的引入一般放在settings.py 文件中的 MIDDLEWARE 中, 日志中间件也是从这里引入放进去。

image.png

配置两个字段,后面自定义middleware文件会使用到。

API_LOG_METHODS api 日志请求方法 API_LOG_ENABLE 是否开启api 日志记录

自定义middleware文件解析

在上面截图中可以看到权限中间件是放在了vadmin.op_drf.middleware.ApiLoggingMiddleware 里面 。去到对应的 middleware 文件中,看中间件写的一些内容。

image.png

从图可知,ApiLoggingMiddleware 继承于MiddlewareMixin, 然后例行的自定义实现了中间件中常用的方法 process_request, process_view, process_response。 然后还有两个私有的类方法, handle_request 以及 handle_response,这两个方法主要是对请求的信息以及返回的信息做加工处理。

process_request: 请求进来前的处理
process_view: 请求进入到视图处理前的处理
process_response: 请求处理完后的记录

因为这是对日志进行记录,对于request, response 以及 view都是要进行处理记录的。

对 ApiLoggingMiddleware这个类的代码进行分析

  1. 初始化分析 获取 settings.py 文件中设置的两个字段的值,后续会根据这两个字段的值进行下一步的操作。

image.png 2. process_request分析

image.png

从图中可以看到,process_request直接调用了 handle_request这一个私有化方法。

  • handle_request方法分析

image.png 由图可知,这个方法里面,通过调用项目中的Request工具类(utils/request_util.py),分别获取到请求的IP信息,请求的参数信息,请求的URL信息,然后记录到日志中。

  1. process_view分析

image.png 这一块初始看代码其实是有点懵的,但是按照正常理解,view 视图是对数据逻辑的处理,会涉及的model 的查询相关操作,通过反向的数据model映射,获取到对应的model 的 verbose_name

  1. process_response分析

image.png 从图的代码可以看出,当api日志记录是开启的时候,记录的api 请求方式在对应的允许的范围里,会调用handle_response 对对应的request数据,response数据进行处理。

  • handle_response方法分析

image.png 这个方法会对请求数据request_data进行获取,并且密码会进行对应的替换 然后也会对返回数据response_data进行获取。 然后会把相关的数据进行整合,保存到日志记录表中。

image.png