当前位置:首页 > 编程笔记 > 正文
已解决

【django项目记录:django项目日志打印】

来自网友在路上 191891提问 提问时间:2023-09-20 14:56:22阅读次数: 91

最佳答案 问答题库918位专家为你答疑解惑

首先在项目根目录下写入一个日志格式的文件,mylog.py

import logging
import threading
import os
class CustomFormatter(logging.Formatter):def format(self, record):process_id = os.getpid()thread_id = threading.get_ident()record.process_id = process_idrecord.thread_id = thread_idreturn super().format(record)def d_log(name):# 创建日志记录器logger = logging.getLogger(name)# 配置日志记录器logger.setLevel(logging.INFO)# 创建文件处理程序file_handler = logging.FileHandler('./record.log',encoding='utf-8')file_handler.setLevel(logging.INFO)# 创建控制台处理程序console_handler = logging.StreamHandler()console_handler.setLevel(logging.INFO)# 创建日志格式器formatter = CustomFormatter('%(asctime)s [%(levelname)s][%(name)s][%(process_id)s:%(thread_id)s]:%(message)s')# 将格式器添加到处理程序file_handler.setFormatter(formatter)console_handler.setFormatter(formatter)# 将处理程序添加到日志记录器logger.addHandler(file_handler)logger.addHandler(console_handler)return logger

直接在需要的地方使用就行了,比如在登录的view.py文件中使用

# from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
import json
import time
from .models import *
from django.contrib.auth.hashers import make_password, check_password
from edusys.mylog import d_log
logger = d_log(__name__)class LoginCheck(APIView):def post(self, request, *args, **kwargs):if request.method == "POST":try:data = json.loads(request.body.decode("utf-8"))token = data["token"]q_phone = data["phone"]q_pwd = data["pwd"]user_info, c_role = ((Student.objects.filter(phone=q_phone), "student")if Student.objects.filter(phone=q_phone)else (Teacher.objects.filter(phone=q_phone), "teacher"))logger.info("获取登录信息:用户信息'{}'--角色'{}'".format(user_info,c_role))if user_info:u_phone = user_info[0].phoneu_pwd = user_info[0].pwd if user_info[0].pwd else u_phone[-6:]logger.info("已获取信息,查看密码:{}-{}".format(u_pwd,float(token)))if (u_phone == q_phoneand check_password(u_pwd, q_pwd)and float(token) > time.time()):res_josn = {"msg": "当前状态:已登录","res": {"login_status": True,"token": time.time() + 60 * 60 * 24 * 7,"role": c_role,},}return Response(res_josn)else:logger.info("用户登录信息失效")res_josn = {"msg": "当前状态:账户密码错误或token失效","res": {"login_status": False, "token": 0},}return Response(res_josn)else:logger.error("当前用户不存在:{}".format(q_phone))res_josn = {"msg": "当前状态:账户不存在","res": {"login_status": False, "token": 0},}return Response(res_josn)except json.JSONDecodeError as err:logger.error("数据问题:{}".format(err))res_josn = {"msg": "当前数据有问题","res": {"login_status": False,"token": time.time() - 60 * 60 * 24 * 7,},}class ChangePassword(APIView):def put(self, request, *args, **kwargs):if request.method == "PUT":data = json.loads(request.body.decode("utf-8"))q_phone = data["phone"]q_role = data["role"]q_new_pwd = data["new_pwd"]logger.info("change pwd body is :{}".format(data))if q_role == "student":reset_user = Student.objects.filter(phone=q_phone).first()reset_user.pwd = q_new_pwdreset_user.save()else:reset_user = Teacher.objects.filter(phone=q_phone).first()reset_user.pwd = q_new_pwdreset_user.save()res_josn = {"msg": "{}:新密码设置完成".format(q_role),"res": {"login_status": False,"token": time.time() + 60 * 60 * 24 * 7,},}logger.info("修改密码成功:{}".format(q_phone))return Response(res_josn)class Login(APIView):def post(self, request, *args, **kwargs):if request.method == "POST":data = json.loads(request.body.decode("utf-8"))q_phone = data["phone"]q_pwd = data["pwd"]wx_user = {}logger.info("微信登录data是:{}".format(data))if Student.objects.filter(phone=q_phone):wx_user_info = Student.objects.filter(phone=q_phone)[0]wx_user["w_role"] = "student"wx_user["u_pwd"] = wx_user_info.pwdwx_user["u_phone"] = wx_user_info.phonewx_user["u_name"] = wx_user_info.namewx_user["u_sex"] = wx_user_info.get_sex_display()wx_user["u_birthday"] = wx_user_info.birthdaywx_user["u_school"] = wx_user_info.schoolelif Teacher.objects.filter(phone=q_phone):wx_user_info = Teacher.objects.filter(phone=q_phone)[0]wx_user["w_role"] = wx_user_info.role if wx_user_info.role else "SK"wx_user["u_pwd"] = wx_user_info.pwdwx_user["u_phone"] = wx_user_info.phonewx_user["u_name"] = wx_user_info.namewx_user["u_sex"] = wx_user_info.get_sex_display()wx_user["u_birthday"] = wx_user_info.birthdaywx_user["u_school"] = wx_user_info.schoolelse:logger.info("手机号不存在:{}".format(q_phone))res_josn = {"msg": "手机号有误,有问题请联系学校老师","res": {"login_status": False,"token": time.time() + 60 * 60 * 24 * 7,},}return Response(res_josn)u_pwd = wx_user["u_pwd"] if wx_user["u_pwd"] else wx_user["u_phone"][-6:]if check_password(u_pwd, make_password(q_pwd)):logger.info("登录成功")res_josn = {"msg": "登录成功","res": {"login_status": True,"token": time.time() + 60 * 60 * 24 * 7,"w_role": wx_user["w_role"],"pwd": make_password(u_pwd),"phone": q_phone,"u_name": wx_user["u_name"],"sex": wx_user["u_sex"],"birthday": wx_user["u_birthday"],"school": wx_user["u_school"],},}return Response(res_josn)else:logger.info("登录失败")res_josn = {"msg": "手机号/密码错误,有问题联系学校老师","res": {"login_status": False,"token": time.time() + 60 * 60 * 24 * 7,"w_role": wx_user["w_role"],},}return Response(res_josn)
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【django项目记录:django项目日志打印】":http://eshow365.cn/6-10034-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!