【Django】Django使用中间件记录日志

tech2022-07-14  179

文章目录

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'}
最新回复(0)