场景
用Django REST framework来构建Result API,需要记录用户请求的时间、方法、数据、响应状态等。
实现方法
用Python的logging模块结合Django框架的Middleware,来将每次API请求的详细信息记录下来。
settings新增LOGGING配置
定义一个专门记录API日志的logger,命名为api。
| 1 | # LOGGING settings | 
自定义日志记录中间件ApiLoggingMiddleware
在合适的位置新建文件middleware.py,自定义日志记录中间件ApiLoggingMiddleware。
| 1 | # -*- coding: utf-8 -*- | 
在settings中加入中间件ApiLoggingMiddleware
由于中间件对request的处理是顺序执行的,对response处理是逆序执行的,故将ApiLoggingMiddlewar放在MIDDLEWARE_CLASSES的最后面。
| 1 | MIDDLEWARE_CLASSES = [ | 
记录效果
| 1 | INFO 2019-01-11 15:28:50,652 middleware process_response username POST /api/product/ {u'csrfmiddlewaretoken': [u'jAlRDXXXXXXXXzK8UnluvSzaz2yacdDzTwRE005aCVvYnINSG7xvraqi0Pu5QHur'], u'code': [u'test'], u'name': [u'\u53d1\u5e03\u7cfb\u7edf']} 201 Created |