在代码编写过程中,我们会有打印日志的功能,实现打印日志功能的代码如下,我们分三部分学习日志的部分,首先是日志部分的学习,其次是日志在pytest中的使用
python学习笔记二:(python3 logging函数中format说明) - 陌生初见 - 博客园
1.日志部分的学习
我们在python中直接使用python的内置库(在python3中包含该内置库),导入该模块
logging模块的多个属性,level,filename,basicConfig()的相关理解
logging模块中我们的日志level有5个级别,其中定义如下
其中logging模块默认的level是warning级别,所以debug级别的信息默认是不会打印的
可以在basicConfig中指定日志的level,以及输出的文件filename,如果文件不存在时,会在当前目录下生成日志文件
注意:在basicConfig函数中,encoding='utf-8'参数在filename不存在时,是不会生成文件的,所以刚生成文件时,无需指定encoding='utf-8'
一些配置的参数如下:
%(levelno)s: 打印日志级别的数值 ,理解%(xxx)s,是指以字符串的形式输出
%(levelname)s:打印日志级别的名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s:打印当前执行程序名称,python如:login.py
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号,在第几行打印的日志
%(asctime)s: 打印日志的时间
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
简单的代码如下:
- import logging
-
-
-
- def test_log():
-
- # logging.basicConfig(filename='example.log', level=logging.DEBUG,format='%(levelname)s:%(message)s')
-
- # logging.debug('This message should go to the log file')
-
- # logging.info('So should this')
-
- # logging.warning('And this, too')
-
- # logging.error('And non-ASCII stuff, too, like Øresund and Malmö')
-
-
-
-
-
- #通过定义日志的级别来控制日志的输出,也可以将日志输出到一个文件中
-
- logging.basicConfig(level=logging.INFO,filename='test_log.txt',encoding='utf-8')
-
-
-
- logging.info('这是一个info级别的日志')
-
- logging.debug('这是一个debug级别的日志')
-
- logging.warning('这是一个warning级别的日志')
-
- logging.error('这是一个error级别的日志')
-
- logging.critical('这是一个critical级别的日志')
2.logging模块在pytest中的应用
如果直接将上述的代码在pytest框架中输出的时候,你会发现控制台并没有任何的输出,可以在pycharm运行配置中增加命令 -o log_cli=true来设置输出日志,同时也可以在这里指定日志的输出级别,eg:-o log_cli_level=INFO,此时仅会在终端中输出对应级别的日志
也可通过pytest配置文件的方式去指定生成的log文件,以及日志级别格式等内容,在pytest.ini中配置的内容如下
#在pytest.ini文件中指定控制台日志输出的格式
- [pytest]
-
- log_cli=1 #代表在控制台输出
-
- log_cli_level=DEBUG #代表在控制台输出的日志的级别
-
- log_cli_date_format=%Y-%m-%d-%H-%M-%S #设置输出的日期格式
-
- log_cli_format=%(asctime)s - %(filename)s - %(module)s - %(funcName)s - %(lineno)d - %(levelname)s - %(message)s#设置日志输出的信息以及格式
运行结果如下:
#在pytest.ini文件中指定
- [pytest]
-
- log_cli=1 #代表在控制台输出
-
- log_file_level=DEBUG #代表在日志文件输出的日志的级别
-
- log_cli_date_format=%Y-%m-%d-%H-%M-%S #设置输出的日期格式
-
- log_cli_format=%(asctime)s - %(filename)s - %(module)s - %(funcName)s - %(lineno)d - %(levelname)s - %(message)s #设置日志输出的信息以及格式
-
- log_file=log.log #指定输出的文件名
运行结果如下: