Python教程-Django中的日志记录器
开发人员都会遇到错误,并解决这些错误需要一些时间。
当我们知道实际问题以及错误发生的时间时,它就更有帮助。这意味着Python的错误消息非常有帮助。
在本教程中,我们将讨论日志记录模块以及如何在Django中实现它。这个模块提供了许多优点。作为Django开发人员,我们也很重要,需要掌握日志记录。Django为各种日志记录框架和模块提供了出色的支持。
让我们从简要介绍日志记录模块开始。
什么是日志记录?
日志记录是一种允许开发人员跟踪软件执行过程中某些事件的技术。这是开发人员的最重要工具。日志记录有助于维护软件,也是开发人员的额外一双眼睛。
它跟踪发生的每一个事件。在实施日志记录模块后,我们可以轻松找出哪个部分引发了错误。这种方法使我们能够快速解决错误。
它是如何工作的?幕后
一个单独的程序处理日志记录,这个日志程序只是一个文件写入程序。记录器被认为是以文本格式记录某些事件。然后,记录的信息被保存在文件中。这些文件被称为日志,并以.log扩展名保存。它们包含了发生的事件的日志。
Python提供了日志记录模块,附带了额外的功能。我们将讨论日志记录模块的各种特点。日志记录模块可以处理以下任务 -
- 多线程执行。
- 通过不同的日志级别对消息进行分类。
- 更加灵活和可配置。
- 提供更结构化的信息。
如果您想了解有关日志记录模块的更多信息,请访问我们的Python中的日志模块教程。
日志记录模块的组件
日志记录模块主要有四个组件。我们将逐个讨论每个组件。
- 记录器(Loggers)
开发人员处理记录器; 这与在调用它们时将要调用的函数相同。当我们调用该函数时,它提供详细的报告。记录器可以生成多个级别的响应。
我们也可以根据需要进行修改。
- 处理程序(Handlers)
处理程序用于生成信息。这类似于将信息传输的报纸。我们可以通过在日志文件中提及信息(默认行为)来实现这一点。日志记录模块提供了许多处理程序。
相同的记录器可以实现多个处理程序。还提供了SMTP处理程序,可以为我们发送日志记录。处理程序通常包含用于记录信息的业务逻辑。
- 筛选器(Filters)
筛选器用于处理从记录器传递到处理程序的日志记录。顾名思义,它会筛选消息。可以为多个消息提供多个处理程序。默认情况下,满足日志级别要求的任何日志消息都将被处理。
我们可以在记录器和处理程序中使用筛选器。
- 格式化程序(Formatters)
格式化程序用于格式化数据。处理程序的问题是它们不能将信息发送为Python数据类型。要发送这种类型的信息,我们需要首先进行转换。
日志记录默认处于日志记录格式,日志记录模块预定义了它。我们可以直接通过互联网发送信息或以文本文件的形式发送信息。要进行格式转换,我们需要使用格式化程序。
Django中的日志记录
日志模块可以在Django中轻松实现并进行配置。
要在Django中使用记录器,我们需要按照以下步骤进行操作。
- settings.py文件将配置各种记录器、处理程序和筛选器。
- 我们需要在Django的视图或任何其他模块中包含记录器代码。
让我们开始在Django中使用记录器的过程。
创建新项目
记录器可以在现有项目中实现。但是,为了更好地理解它,您可以创建一个新项目。使用以下命令在Django中创建新项目。
django-admin startproject javatiku
上述命令将创建项目。现在,我们将配置settings.py项目。
配置设置
这是在Django中实施记录器的第一步。配置settings.py相当容易。我们需要定义以下内容 -
- 记录器(Loggers)
- 处理程序(Handlers)
- 筛选器(Filters)
- 格式化程序(Formatters)
我们使用dictConfig方法,尽管还有其他方法可用。但是dictConfig方法是Django的默认方法。复制下面的代码并将其粘贴到settings.py中。
# Javatiku #Logging Information
LOGGING = {
'version': 1,
# Version of logging
'disable_existing_loggers': False,
#disable logging
# Handlers #############################################################
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'loggerDjango-debug.log',
},
########################################################################
'console': {
'class': 'logging.StreamHandler',
},
},
# Loggers ####################################################################
'loggers': {
'django': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
'propagate': True,
'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG')
},
},
}
让我们来分解上面的代码 -
代码可能看起来很大且复杂,但很容易理解。我们从Django中有一个名为LOGGING的内置变量。由于我们正在使用一个称为dictConfig方法的字典来配置设置,因此日志的默认值来自此字典。
下面是LOGGING字典中的一些重要键。
以下是LOGGING字典中的一些重要键。
- 版本(version)
- 禁用现有的记录器(disable_existing_loggers)
- 处理程序(handlers)
- 记录器(loggers)
版本键指定了模式版本。它具有值,默认值为1。
接下来的键是disable_exiting_loggers,它指定不要禁用记录器。默认情况下,Django附带其记录器。这些记录器与Django的ORM和Django的内部部分相连。默认情况下,该键为true,因此它禁用了这些记录器。
第三个键是处理程序。如上所述,处理程序处理消息并将其传递到控制台、文件等。处理程序本身是一个字典。处理程序的名称定义为字典键。记录器提供许多处理程序,但在这里我们将使用两个处理程序。
1. FileHandler: logger-name -filehandler
FileHandler将日志存储在文件中。正如您可以在上面的代码中看到的,我们已将文件名设置为javatiku-debug.log。日志文件通常以扩展名.存储。我们需要具有对其进行更改的权限。
2. StreamHandler: logger name - console
StreamHandler将日志流式传输到控制台。不建议使用此方法。命令行显示日志的字符限制。在大型日志数据的情况下,我们需要文件处理程序。
还有更多处理程序,如mailhandlers、AdminEmailHandlers等。
记录器将记录服务器或软件信息。记录器也是字典类型。它具有与处理程序相似的结构。但有不同的属性和其他属性。
Django附带了一组记录器,如django、django.requests等。
现在键入以下命令并按Enter键。
python manage.py runserver
这将创建一系列日志,这是因为默认调试级别。所有这些日志实际上是默认记录器的消息。我们还可以在连续文件中创建自定义记录器。正如我们在下面的图像中所看到的,javatiku-debug.log文件已经创建,其中包含了所有的日志记录。
有许多日志错误或警告或更高级别都将得到通知。
结论
日志记录是开发人员的重要工具。如果程序员正确实施它,它可以减少复杂性并节省大量时间。日志处理程序轻松处理日志,并使跟踪事件是否发生以及原因变得容易。