首页 > 其他分享 >Django实现文件上传、文件列表查看、修改、限流和日志记录8

Django实现文件上传、文件列表查看、修改、限流和日志记录8

时间:2023-08-13 19:12:00浏览次数:51  
标签:文件 now logging format datetime 限流 日志 Django

Django实现文件上传、文件列表查看、修改、限流和日志记录8

本章节,总结一些部署项目遇到的报错,希望会有所帮助

NameError: name 'datetime' is not defined

报错“logging.info('用户 {} 在 {} 登录成功'.format(username, datetime.now())) NameError: name 'datetime' is not defined”

#报错原因为忘记导入datetime模块。请在file_upload_app/views.py文件中添加以下导入语句:
from datetime import datetime

#在user_login视图函数中使用datetime.now()来获取当前时间,并将其添加到日志消息中
logging.info('用户 {} 在 {} 登录成功'.format(username, datetime.now()))
logging.info('用户 {} 在 {} 查看文件内容'.format(request.user.username, datetime.now()))

 

 

中文乱码问题

乱码日志为:

logging.error('�û� {} �� {} �鿴�ļ�����ʧ��'.format(datetime.now()))
在FileHandler的构造函数中添加了encoding='utf-8'参数,以指定日志文件的编码为UTF-8

file_handler = logging.FileHandler('app.log', encoding='utf-8')

#最终解决
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s',
    handlers=[
        logging.FileHandler('app.log', encoding='utf-8'),
        logging.StreamHandler()              #将日志同时输出到文件和控制台
        # logging.StreamHandler(sys.stdout)  # 将日志消息输出到控制台
    ]
)

 

IndexError: Replacement index 1 out of range for positional args tuple

报错: logging.info('用户 {} 在 {} 文件修改失败'.format(datetime.now())) IndexError: Replacement index 1 out of range for positional args tuple

#在格式化日志消息时,需要确保格式化字符串中的占位符与传递给format()方法的参数数量匹配。
#提供的代码示例中,format()方法的参数数量不足,导致了IndexError异常。
#为了修复这个问题,你可以将日志消息的格式化字符串中的占位符数量与format()方法的参数数量保持一致
#使用format()方法的参数数量与日志消息格式化字符串中的占位符数量保持一致,确保不会出现IndexError异常。
#请注意,如果你在其他地方也使用了类似的日志消息格式化代码,请确保在整个代码中都进行了修正。

#错误定义
logging.info('用户 {} 在 {} 文件修改失败'.format(datetime.now()))

#修改定义为
logging.info('用户 {} 在 {} 登录成功'.format(username, datetime.now()))

#将datetime.now()作为参数传递给format()方法,以匹配日志消息中的占位符数量。
#使用request.user.username来获取当前登录用户的用户名,并将其添加到日志消息中。
#请注意,为了获取当前登录用户的用户名,你需要确保用户已经通过认证并登录
logging.info('用户 {} 在 {} 查看文件内容'.format(request.user.username, datetime.now()))

 

日志在控制台输出不在日志文件输出

日志消息只在控制台输出而不在日志文件中输出,可能有以下几个原因:

  1. 检查文件路径:请确保日志文件的路径是正确的,并且Django应用程序有权限写入该文件所在的目录。你可以尝试使用绝对路径来指定日志文件的路径,如/path/to/your/app.log。
  2. 检查日志级别:请确保日志级别设置为logging.INFO或更高级别,以确保所有日志消息都会被记录。如果将日志级别设置为logging.DEBUG,则只会记录更详细的调试信息。
  3. 检查日志记录器:请确保你的代码中的日志记录器与basicConfig中的日志记录器是同一个。在你的代码示例中,你创建了一个名为logger的日志记录器,并将其级别设置为logging.INFO。确保在记录日志消息时使用相同的日志记录器,如logger.info('日志消息')。
  4. 检查日志消息的级别:请确保你在记录日志消息时使用的日志级别高于或等于logging.INFO,以确保消息会被记录。如果你使用了低于logging.INFO级别的日志级别,例如logging.DEBUG,则消息可能不会被记录到日志文件中。

 此外,还遇到很多报错,没来得及记录,通过检查代码、百度Google排查报错处理。整个的排查思路就是根据新增功能带来的影响进行排查处理,基本上原因有以下几点:

1、代码编写不规范

2、缺少导入模块

3、没定义调用的模块

4、引用模块失败

5、代码逻辑编写问题

在添加功能的时候,一次增加一个功能然后及时的验证避免太多功能带来连锁反应增加排查的难度,刚学习Django项目应该先实现自己所需的功能,在一点点添加完善优化。

 

 

标签:文件,now,logging,format,datetime,限流,日志,Django
From: https://www.cnblogs.com/weiweirui/p/17627009.html

相关文章

  • maven系列:POM文件总体配置说明
    <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd"><!--......
  • python实现在excel文件中写入和追加内容
    示例代码#-*-coding:utf-8-*-"""#@Time:2023/08/1318:01#@Author:longrong.lang#@FileName:demo.py#@Software:PyCharm#@Blog:https://www.cnblogs.com/longronglang/#@Motto:Iamaslowwalker,butIneverwalkbackwards.......
  • 使用C语言编写文件读写工具
    使用C语言编写文件读写工具在现代软件开发中,文件读写是一个非常常见且重要的操作。通过使用C语言编程,我们可以轻松地实现文件的读取和写入。本文将介绍如何使用C语言编写文件读写工具,以及一些相关的注意事项。2使用C语言编写文件读写工具首先,我们需要包含头文件stdio.h,这个头文......
  • ASP.Net MVC文件访问控制
    程序需求:通用的可以控制某个文件夹下所有所有文件的访问,且可后期扩展文件根目录下增加“FileAccessControl.cs”的一般处理程序,代码如下:(文件名可以自定义)///<summary>///用于文件是否可以访问的判断///</summary>publicclassFileAccessControl:IHttpHandler{pu......
  • Django Form钩子方法源码分析
    1.用法 在Form类中定义名称为 clean_+form字段名称的方法校验成功返回self.clean_data["字段名"]校验失败会raise报错 2.源码分析先从is_valid方法开始分析 当self._is_bound=True,self.errors为False时校验成功1. self._is_bound 当django项目......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录7
    Django实现文件上传、文件列表查看、修改、限流和日志记录7不管调用的接口在内网,还是外网都需要做好限制保证接口的访问和限流降级处理,本章节新增限流功能。限流功能主要针对两个方面:IP和用户针对IP限流文件列表接口进行限流处理,限制每分钟每个IP访问10次,你可以使用Dja......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录6
    Django实现文件上传、文件列表查看、修改、限流和日志记录6对于已经上传的文件,现在已经实现了文件的查看修改,美中不足的是:需要查看每个文件需要提前记住文件名指定文件名进行查看和修改。为此,新增一个上传文件的列表功能,在通过模版按钮跳转路由到查看和修改页面。实现逻辑查看......
  • Python文件路径解谜:深入剖析os.path系列函数的精髓
    介绍在Python中,os.path模块提供了一系列用于处理文件路径和文件系统的函数。它是Python标准库中os模块的一部分。本文将深入探讨os.path系列函数的使用方法,从入门到精通。目录导入os.path模块获取文件路径信息os.path.abspath():获取绝对路径os.path.dirname():获取目录......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录4
    Django实现文件上传、文件列表查看、修改、限流和日志记录4本章添加用户认证功能,属于安全模块。用户认证在Django中,默认情况下,用户的用户名和密码是存储在数据库中的。Django提供了内置的用户模型(User模型),它可以管理用户的认证和授权。配置数据库在file_upload/settings.py......
  • Web通用漏洞--文件上传
    Web通用漏洞--文件上传概述文件上传安全指的是攻击者通过利用上传实现后门的写入连接后门进行权限控制的安全问题,对于如何确保这类安全问题,一般会从原生态功能中的文件内容,文件后缀,文件类型等方面判断,但是漏洞可能不仅在本身的代码验证逻辑中出现安全问题,也会在语言版本,语言函数......