测试开发技术网站
博客
设计
设计
开发
Python
测试
unittest
运维
Linux基础应用
CI/CD
CI/CD
数据库
数据库
云计算
云计算
云原生
云原生
爬虫
爬虫
数据分析
数据分析
人工智能
人工智能
登录
注册
Pytest----如何使用logging模块写日志
收藏本文
作者:redrose2100 类别: 日期:2022-12-04 14:57:32 阅读:1065 次 消耗积分:0 分
[TOC] ![](https://redrose2100.oss-cn-hangzhou.aliyuncs.com/img/7cd47362-951c-11ee-986a-0242ac110004.png) logging是python语言中的一个日志模块,专门用来写日志的,日志级别通常分为debug、info、warning、error、critical几个级别,一般情况下,默认的日志级别为warning,在调试或者测试阶段,日志级别可以设置为debug或者info,当在生产环境上线后日志级别一般为warning或者error级别,下面就快速体验一下logging模块写日志的用法,这里创建一个python文件,比如demo.py 文件,然后在即可在python文件中使用logging写日志了,比如如下代码,使用logging对每一个日志级别分别写了一条日志。 ```python import logging logging.debug("this is debug log") logging.info("this is info log") logging.warning("this is warning log") logging.error("this is error log") logging.critical("this is critical log") ``` 执行python文件,结果如下,可以看出,此时仅打印了warning、error、critical级别的日志,这是因为python中默认的级别是warning级别。所以低于warning级别的日志都不会打印了。 ```bash (demo-HCIhX0Hq) E:\demo>python demo.py WARNING:root:this is warning log ERROR:root:this is error log CRITICAL:root:this is critical log (demo-HCIhX0Hq) E:\demo> ``` 当然在代码中是可以修改日志级别的,比如如下代码即将日志级别修改为了debug级别。 ```python import logging logging.basicConfig(level=logging.DEBUG) logging.debug("this is debug log") logging.info("this is info log") logging.warning("this is warning log") logging.error("this is error log") logging.critical("this is critical log") ``` 再次执行demo.py文件,可以看出此时已经将debug和info级别的日志都显示出来了。 ```bash (demo-HCIhX0Hq) E:\demo>python demo.py DEBUG:root:this is debug log INFO:root:this is info log WARNING:root:this is warning log ERROR:root:this is error log CRITICAL:root:this is critical log (demo-HCIhX0Hq) E:\demo> ``` 利用logging往日志文件写日志也是很容易的,如下代码配置一个文件即可,同时可以设置日志的级别,比如这里仍然设置为debug级别,即debug以及以上级别的日志均会写入日志文件。 ```python import logging logging.basicConfig(filename="demo.log",level=logging.DEBUG) logging.debug("this is debug log") logging.info("this is info log") logging.warning("this is warning log") logging.error("this is error log") logging.critical("this is critical log") ``` 此时再次执行demo.py文件,可以发现此时控制台并没有打印,而是在当前目录下生成了一个demo.log文件,内容如下: ```bash DEBUG:root:this is debug log INFO:root:this is info log WARNING:root:this is warning log ERROR:root:this is error log CRITICAL:root:this is critical log ``` 默认情况下写日志文件日志是按照追加的模式,比如再次执行一次,则demo.log中的内容即变为如下内容: ```bash DEBUG:root:this is debug log INFO:root:this is info log WARNING:root:this is warning log ERROR:root:this is error log CRITICAL:root:this is critical log DEBUG:root:this is debug log INFO:root:this is info log WARNING:root:this is warning log ERROR:root:this is error log CRITICAL:root:this is critical log ``` 当然是可以设置写入日志的模式,比如如下filemode模式设置为w,则表示每次清空文件再写日志,当然如果把filemode设置为a则为追加模式,如果不设置,默认情况下也是追加模式。 ```python import logging logging.basicConfig(filename="demo.log",filemode='w',level=logging.DEBUG) logging.debug("this is debug log") logging.info("this is info log") logging.warning("this is warning log") logging.error("this is error log") logging.critical("this is critical log") ``` 此时再次执行demo.py文件,此时因为模式设置为w了,因此demo.log内容先清空再写入,即内容如下: ```bash DEBUG:root:this is debug log INFO:root:this is info log WARNING:root:this is warning log ERROR:root:this is error log CRITICAL:root:this is critical log ``` 平常我们在查看其他产品的日志时,都是会显示文件、时间、代码行数等信息,这里也是可以设置的。比如如下,这里直接设置日志格式,并直接在控制台打印。 ```python import logging logging.basicConfig(format=("%(asctime)s | %(levelname)s | %(filename)s:%(lineno)s | %(message)s"), datefmt="%Y-%m-%d_%H:%M:%S", level=logging.DEBUG) logging.debug("this is debug log") logging.info("this is info log") logging.warning("this is warning log") logging.error("this is error log") logging.critical("this is critical log") ``` 执行结果如下,可以看到此时日志中有时间戳、日志级别、代码文件、代码函数,日志内容等。这个格式基本就是我们希望要的日志格式。 ```bash (demo-HCIhX0Hq) E:\demo>python demo.py 2022-12-04_22:47:14 | DEBUG | demo.py:6 | this is debug log 2022-12-04_22:47:14 | INFO | demo.py:7 | this is info log 2022-12-04_22:47:14 | WARNING | demo.py:8 | this is warning log 2022-12-04_22:47:14 | ERROR | demo.py:9 | this is error log 2022-12-04_22:47:14 | CRITICAL | demo.py:10 | this is critical log (demo-HCIhX0Hq) E:\demo> ``` 当然python中的logging模块还有许多其他高级的应用,在pytest中只需要这么简单的用logging即可,因此这里就不再深入的介绍logging了。
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/478
上一篇:
Pytest----如何打开或关闭实时输出和捕获标准输出
下一篇:
Pytest----什么是实时日志和捕获日志
搜索
个人成就
出版书籍
《Pytest企业级应用实战》
测试开发技术全栈公众号
测试开发技术全栈公众号
DevOps技术交流微信群
加微信邀请进群
常用网站链接
开源软件洞察
云原生技术栈全景图
Python语言官方文档
Golang官方文档
Docker官方文档
Jenkins中文用户手册
Scrapy官方文档
VUE官方文档
Harbor官方文档
openQA官方文档
云原生开源社区
开源中国
Kubernetes中文文档
Markdown语法官方教程
Kubernetes中文社区
Kubersphere官方文档
BootStrap中文网站
JavaScript中文网
NumPy官方文档
Pandas官方文档
GitLink确实开源网站
数据库排名网站
编程语言排名网站
SEO综合查询网站
数学加减法练习自动生成网站
Kickstart Generator
文章分类
最新文章
最多阅读
特别推荐
×
Close
登录
注册
找回密码
登录邮箱:
登录密码:
图片验证码:
注册邮箱:
注册密码:
邮箱验证码:
发送邮件
注册邮箱:
新的密码:
邮箱验证码:
发送邮件