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、与日志和日志消息一起打印日志级别。