Django 中的日志记录17 Mar 2025 | 6 分钟阅读 开发者在开发过程中都会遇到 bug,并且解决 bug 需要花费一些时间。 当我们知道实际问题,并且在错误发生时,这会更有帮助。这意味着 Python 的错误消息相当有帮助。 在本教程中,我们将讨论日志模块以及如何在 Django 中实现它。该模块提供了许多优点。作为 Django 开发者,掌握日志记录至关重要。Django 为各种日志框架和模块提供了出色的支持。 让我们从对日志模块的简要介绍开始。 什么是日志记录?日志记录是一种技术,它允许开发者在软件执行时跟踪某些事件。它是开发者的重要工具。日志记录有助于维护软件,并充当开发者的额外眼睛。 它跟踪所有时间发生的每个事件。在实现日志模块后,我们可以轻松找到哪个部分抛出了错误。此方法允许我们快速解决错误。 它是如何工作的?幕后一个单独的程序处理日志记录,而该日志记录程序本质上是一个文件写入器。日志记录器会以文本格式记录某些事件。记录的信息然后保存在文件中。这些文件称为日志,并以 log 扩展名保存。它们包含发生的事件的日志。 Python 提供了 logging 模块,其中包含额外的功能。我们将讨论 logging 模块的各种功能。logging 模块可以处理以下任务:
如果您想了解更多关于 logging 模块的信息,请访问我们的 Python 中的日志模块 教程。 日志模块的组件日志模块主要有四个组件。我们将分别讨论每个组件。
开发者处理日志记录器;它与被调用时会调用的函数相同。当我们调用该函数时,它会提供详细的报告。日志记录器可以生成多个级别的响应。 我们还可以根据需要对其进行修改。
处理程序用于生成信息。它就像一家传播信息的报纸。我们可以通过在日志文件中提及信息来实现这一点(默认行为)。logging 模块提供了许多处理程序。 同一个日志记录器可以实现多个处理程序。还提供了 SMTP 处理程序,可以为我们邮寄日志记录。处理程序通常包含记录日志信息的业务逻辑。
过滤器(Filters)用于处理从日志记录器传递到处理程序的日志记录。顾名思义,它会过滤消息。可以有多个处理程序来处理多个消息。默认情况下,任何满足日志级别要求的日志消息都将被处理。 我们可以在日志记录器和处理程序上使用过滤器。
格式化程序用于格式化数据。处理程序的问题在于它们无法将信息作为 Python 数据类型发送。要发送此类信息,我们需要先进行转换。 日志默认采用 Log Record 格式,logging 模块已预定义。我们可以直接通过互联网或以文本文件的形式发送信息。要转换格式,我们需要格式化程序。 Django 中的日志记录登录模块可以轻松地在 Django 中实现和配置。 要使用 Django 中的日志记录器,我们需要遵循以下步骤。
让我们开始在 Django 中使用日志记录器的过程。 创建新项目日志记录器可以实现在现有项目中。但是,您可以创建一个新项目以更好地理解它。使用以下命令在 Django 中创建新项目。 上面的命令将创建项目。现在,我们将配置 settings.py 项目。 配置设置这是在 Django 中实现日志记录器的第一步。配置 settings.py 非常简单。我们需要定义以下内容:
我们使用 **dictConfig 方法**,尽管还有其他方法可用。但 dictConfig 方法是 Django 的默认方法。复制以下代码并粘贴到 settings.py 中。 让我们分解上面的代码: 这段代码可能看起来很长很复杂,但很容易理解。我们有一个来自 Django 的内置变量 **LOGGING**。由于我们正在使用一个称为 **dictConfig** 方法的字典来配置设置。日志记录的默认值来自此字典。 以下是 **LOGGING** 字典中包含的一些重要键。 以下是 **LOGGING** 字典中的一些重要键。
version 键指定模式版本。它有一个值,默认值为 1。 下一个键是 **disable_exiting_loggers**,它指定不要禁用日志记录器。默认情况下,Django 自带日志记录器。这些日志记录器与 Django ORM 和 Django 的内部部分相关联。默认情况下,该键为 true,因此它会禁用这些日志记录器。 第三个键是 **Handlers**。如上所述,处理程序处理消息并将其传递到控制台、文件等。处理程序本身是一个字典。处理程序的名称作为字典键定义。日志记录器提供了许多处理程序,但我们将在此处使用两个处理程序。 1. FileHandler:logger-name -filehandler FileHandler 将日志存储在文件中。如您在上面的代码中所见,我们将文件名指定为 **javatpoint-debug.log**。日志文件通常以 **.log** 扩展名存储。我们需要有权限对其进行更改。 2. StreamHandler:logger name - console StreamHandler 会在控制台上流式传输日志。不建议使用此方法。命令行显示日志有一个字符限制。对于大型日志数据,我们需要文件处理程序。 还有更多处理程序,如 **mailhandlers、AdminEmailHandlers** 等。 日志记录器将记录服务器或软件信息。日志记录器也是字典类型。它具有与处理程序类似的架构。但是,有不同的属性和其他属性。 Django 附带了一组日志记录器,如 **django、django.requests** 等。 现在输入以下命令并按 Enter 键。 这将创建一系列日志,这是由于默认的 debug 级别。所有这些日志实际上都来自默认日志记录器的消息。我们也可以在连续的文件中创建自定义日志记录器。正如我们在下图中所看到的,javatpoint-debug.log 文件已被创建,并且它包含了所有日志记录。 ![]() 将记录大量日志 bug 或警告或更高级别的通知。 结论日志记录是开发者的重要工具。如果程序员正确实现它,它可以降低复杂性并节省大量时间。日志处理程序可以轻松处理日志,并使跟踪事件(无论是否发生以及原因)变得容易。 |
在接下来的教程中,我们将学习用于模式搜索的有限自动机算法,并讨论在 Python 编程语言中实现该算法的方法。但在我们开始之前,让我们先了解一下有限自动机的含义。有限自动机的简介 有限...
阅读 13 分钟
乒乓球游戏是街机游戏中最著名的游戏之一,与乒乓球非常相似。这个游戏的规则很简单:有两个玩家。双方都控制着自己一方的球拍。他们可以在垂直方向上移动球拍,从...
阅读 6 分钟
简介:本教程讨论 PyBluez - Bluetooth Python 扩展模块。本文旨在向您介绍蓝牙编程,并帮助您开始使用 Python 蓝牙模块 PyBluez。蓝牙套接字编程与网络设计者用于 TCP/IP 连接的套接字编程相同,并且……
阅读 6 分钟
Hackerrank是一个流行的在线编程挑战平台,平台上最流行的问题之一是“最大矩形”问题。这个问题要求你在给定的直方图中找到最大的矩形区域。在本文中,我们将带你了解...
阅读 4 分钟
Python 是一种动态类型语言,这意味着我们无需在使用变量之前提及变量类型或声明。这使得 Python 成为最有效和易于使用的语言。Python 中的每个变量都被视为一个对象。在声明变量之前,我们必须...
阅读 2 分钟
在本教程中,我们将学习如何使用 print() 函数的 flush 参数显式刷新输出数据缓冲区。我们还将确定何时需要刷新数据缓冲区,以及何时不需要。我们还将讨论更改数据……
阅读 10 分钟
在以下教程中,我们将了解 Quandl 包及其在 Python 编程语言中的使用,并提供一些示例。但在开始之前,让我们了解什么是 Quandl?理解 Quandl Quandl 是一个为其提供经济、金融和替代数据集的平台。
阅读9分钟
Python 算法是任何技术爱好者、软件工程师或数据科学家的最重要工具。我们在 Python 中编写的算法不是语言特定的,它们没有标准的规则来解释它们应该如何精确地编写。现在这意味着...
5 分钟阅读
在本教程中,我们将学习如何使用 Python 函数来查找给定字典中与最高值相关联的字典键,即使存在嵌套字典。此外,我们还将学习如何从字典列表中获取字典的键。我们将...
阅读 4 分钟
在本教程中,我们将学习如何在 Python 中打印彩色文本。命令行应用程序的颜色与终端相同。有时,我们希望在输出中打印文本以吸引用户的注意力。在某些情况下,一点颜色可以使...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India