文章目录
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'}