文章目录
 utills文件夹下.创建log_middleware.pysetting里配置中间件配置信息
   日志形式
 
 复制的网上的.按照自己的需求进行了部分更改.找不到原文地址了.
 
utills文件夹下.创建log_middleware.py
 
python文件
 
import time
import json
from django.utils.deprecation import MiddlewareMixin
import urllib.parse
# 获取日志logger
import logging
logger = logging.getLogger(__name__)
class LogMiddle(MiddlewareMixin):
    # 日志处理中间件
    def process_request(self, request):
        # 存放请求过来时的时间
        request.init_time = time.time()
        return None
    def process_response(self, request, response):
        try:
			# 耗时
            localtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            # 请求路径
            path = request.path
            # 请求方式
            method = request.method
            # 响应状态码
            status_code = response.status_code
            # 响应内容
            content = response.content
            # 记录信息
            content = str(content.decode('utf-8'))
            content = urllib.parse.unquote(content)
            content = (json.loads(content))
            message = '%s %s %s %s %s' % (localtime, path, method, status_code, content)
            logger.info(message)
        except:
            logger.critical('系统错误')
        return response
 
setting里配置
 
中间件
 
MIDDLEWARE = [
    ...
    'project_utils.log_middleware.LogMiddle',
]
 
配置信息
 
LOGGING = {
    'version': 1,
    # 禁用日志
    'disable_existing_loggers': False,
    'loggers': {
        '': {
            # 将系统接受到的体制,交给handler去处理
            'handlers': ['console'],
            'level': 'INFO',
        }
    },
    'handlers': {
        'default': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '%s/%s' % (LOG_PATH, 'asm.log'),
            'maxBytes': 1024 * 1024 * 5,  # 文件大小
            'backupCount': 5,  # 备份数
            # 'formatter': 'standard',  # 输出格式
            'encoding': 'utf-8',  # 设置默认编码,否则打印出来汉字乱码
        },
        'console': {
            # handler将日志信息存放在day6/logs/sys.log
            'filename': '%s/%s' % (LOG_PATH, 'asm.log'),
            'level': 'INFO',
            # 指定日志的格式
            'formatter': '',
            # 备份
            'class': 'logging.handlers.RotatingFileHandler',
            # 日志文件大小:5M
            'maxBytes': 5 * 1024 * 1024,
            'encoding':"utf-8"
        }
    },
    'formatters': {
        'default': {
            'format': '%(asctime)s %(message)s'
        }
    }
}
 
日志形式
 
2020-09-02 16:16:01 /user/role_type/ GET 200 {'msg': '权限不足', 'status_code': '20005'}