场景
用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 |