Python 日志记录基本配置

原文:https://www.studytonight.com/python/python-logging-configuration

配置python logging模块,设置日志级别、日志格式等。,我们可以使用basicConfig(**kwargs)方法,其中函数定义中的**kwargs表示该函数采用变长参数,应该以键值形式传递。

basicConfig()功能中一些常用参数如下:

  • level:在这个参数的帮助下,根记录器将被设置为指定的严重级别,如 DEBUG、INFO、ERROR 等。

  • filename:这个参数主要用来指定文件名如果我们想把日志存储在一个文件中。

  • filemode:如果给出filename,则文件在模式下打开。默认模式为a,即追加

  • format:用于指定日志消息的格式。例如,如果您想在日志中添加时间戳,或者 python 脚本的名称,或者日志中的函数或类名,那么我们可以为此指定适当的格式。

basicConfig()函数中,我们既可以为级别参数提供合适的值,文件名文件代码用于打印文件中的日志,格式参数用于指定日志,也可以将所有参数一起指定,这就是**kwargs的妙处,也就是说一个函数可以提供的参数数量不是固定的。

让我们举个例子

让我们看一下这个例子,以便清楚地理解这个方法:

import logging

logging.basicConfig(level=logging.INFO)
logging.info('This is an info message.This will get logged.')

信息:根:这是一条信息消息。这将被记录下来。

所有在INFO级或以上的事件将被记录。

需要记住的要点:

  • 这里需要注意的是,调用basicConfig()来配置根记录器仅在根记录器之前没有被配置的情况下才起作用。基本上这个函数只能调用一次。

  • 还有debug()info()warning()error()critical(),如果在之前没有调用过basicConfig()方法,所有这些函数都会自动内部调用basicConfig()方法,没有任何参数。

  • 这意味着在第一次调用上面给出的函数之后,您不能再配置根记录器,因为它们会在内部调用basicConfig()函数。

因此basicConfig()中的默认设置是设置记录器以下列格式写入控制台:

错误:根:这是一条错误消息

日志级别、记录器名称,然后是日志消息。

将日志存储在文件中

我们可以使用basicConfig()方法将日志存储在文件中。我们如何做到这一点,我们将在下一个教程中学习如何在文件中存储 Python 代码日志。

设置日志格式

我们可以配置logging模块,以任何我们想要的格式打印日志。有一些通用的标准格式,我们可以配置 python 记录器以这些格式打印日志。

日志的一些基本组件已经是日志记录的一部分,我们可以很容易地添加它们或者从输出格式中删除它们。

让我们举几个例子来理解这一点。

将进程标识添加到日志级别和消息的日志中

如果您想在日志级别和消息中包含运行 python 脚本的进程标识,那么下面给出了相同的代码片段:

import logging

logging.basicConfig(format='%(process)d-%(levelname)s-%(message)s')
logging.warning('This message is a warning')

1396-警告-该消息是警告

在上面的代码中,在basicConfig()方法中,我们用格式字符串作为我们指定的值设置了format参数,我们希望在日志中包含哪些组件,并指定其数据类型,就像用进程d打印整数进程 Id 一样,然后用s打印日志级别,这是字符串值,对消息也是如此

此外,在上面的代码中,我们可以以任何顺序设置LogRecord属性的格式。

使用日志消息向日志添加时间戳

您也可以将日期和时间信息(时间戳)与日志消息一起添加到日志中。其代码片段如下所示:

import logging

logging.basicConfig(format='%(asctime)s - %(message)s', level=logging.INFO)
logging.info('This message is to indicate that Admin has just logged in')

2020-06-19 11:43:59,887 -此消息表示管理员刚刚登录

在上面的代码中%(asctime)s添加了LogRecord的创建时间。此外,我们还用代码level=logging.INFO配置了日志级别。

使用datefmt属性

您也可以使用datefmt属性更改格式,该属性使用与日期时间模块中的格式功能相同的格式语言,例如time.strftime():

import logging

logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
logging.warning('The Admin just logged out')

19-6-20 11:50:28-管理员刚注销

如您所见,作为上述代码输出打印的日志具有日期格式 DD-MMM-YY 以及时间。

因此,使用basicConfig(**kwargs)方法,我们可以根据需要配置日志格式,如向日志添加时间戳、向日志添加进程 id、与日志和日志消息一起打印日志级别。