自定义日志记录中间件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26


# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import logging
import json


class ApiLoggingMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
self.apiLogger = logging.getLogger('api')

def __call__(self, request):
try:
body = json.loads(request.body)
except Exception:
body = dict()
body.update(dict(request.POST))
response = self.get_response(request)
if request.method != 'GET':
self.apiLogger.info("{} {} {} {} {} {}".format(
request.user, request.method, request.path, body,
response.status_code, response.reason_phrase))
return response