打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
logging模块培训小结
Python自动化课程又上了一节课,每一个自动化框架都涉及到日志的使用,logging模块是Python的一个标准库模块,由标准库模块提供日志记录API的关键好处是所有Python模块都可以使用这个日志记录功能。
接下来就来整理一下昨天上课的内容,整理的目标是把日志模块的一些难点去记录下来。
第一,日志是什么?日志有什么作用?
日志是一种可以追踪某些软件运行时所发生事件的方法。
日志的作用是通过记录和分析日志可以了解一个系统或软件程序运行情况是否正常,也可以在应用程序出现故障时快速定位问题。可以总结为3点:
程序调试
了解软件的运行情况,检查是否正常
程序运行时的故障分析与问题定位
第二,关于日志的等级
首先,我们要知道为什么日志要分为等级?
其实是因为在程序开发阶段,开发人员需要调试代码确保软件的正常运行,需要将所有的日志信息全部记录下来,去定位和分析问题,但是这样是非常消耗性能的。而在程序发布上线后,我们并不需要所有的日志信息,只需要记录一些关于异常信息和报错信息,这样记录可以减少I/O的压力,优化性能,而且可以防止报错信息被淹没在日志的海洋中。所以,日志的等级就是为了解决前面的问题出现的。
python日志的等级分为:
日志等级(level)描述
DEBUG最详细的日志信息,典型应用场景是 问题诊断
INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息
在python中,logging模块提供的日志记录函数所使用的日志器默认设置的日志级别是WARNING,因此只有WARNING级别的日志记录以及大于它的ERROR和CRITICAL级别的日志记录被输出了,而小于它的DEBUG和INFO级别的日志记录被丢弃了。而如果我们需要放开所有信息全部显示的话,则需要调用logging.basicConfig或者使用logger对象调用setLevel()方法:
调用logging.basicConfig配置日志等级
logger对象调用setLevel()配置日志等级
第三,关于格式化日志输出
在logging模块中,默认的日志输出格式在logging.basicConfig方法中设置的如下:
默认格式:     日志级别:日志器名称:日志内容
对应BASIC_FORMAT:   "%(levelname)s:%(name)s:%(message)s"
昨天在课上的时候,没有讲关于格式化的字符串有哪些,今天就列出来:
字段使用格式描述
asctime%(asctime)s日志事件发生的时间--人类可读时间,如:2003-07-08 16:49:45,896
created%(created)f日志事件发生的时间--时间戳,就是当时调用time.time()函数返回的值
relativeCreated%(relativeCreated)d日志事件发生的时间相对于logging模块加载时间的相对毫秒数(目前还不知道干嘛用的)
msecs%(msecs)d日志事件发生事件的毫秒部分
levelname%(levelname)s该日志记录的文字形式的日志级别('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
levelno%(levelno)s该日志记录的数字形式的日志级别(10, 20, 30, 40, 50)
name%(name)s所使用的日志器名称,默认是'root',因为默认使用的是 rootLogger
message%(message)s日志记录的文本内容,通过 msg % args计算得到的
pathname%(pathname)s调用日志记录函数的源码文件的全路径
filename%(filename)spathname的文件名部分,包含文件后缀
module%(module)sfilename的名称部分,不包含后缀
lineno%(lineno)d调用日志记录函数的源代码所在的行号
funcName%(funcName)s调用日志记录函数的函数名
process%(process)d进程ID
processName%(processName)s进程名称,Python 3.1新增
thread%(thread)d线程ID
threadName%(thread)s线程名称
如果说我们要自己去设置自己自定义的格式化输出日志,则我们有两种方法去进行设置日志的输出格式:
使用logging.basicConfig进行格式化输出:
2. 使用日志输出对象进行格式化输出配置
ok,今天的整理就到这里。
Python是一个很优秀的轻量语言,对于大家学习的代价较小,想跟我学习全栈测试课程吗?点击查看原文来了解详情吧。
TestOps|测试运维全生命周期推动质量
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【Python进阶】打印炫酷的日志,让你的代码不再单调乏味!
接口测试基础——第4篇logging模块
第32天:Python logging 模块详解
优雅的记录Python程序日志
python的logging模块使用方法
python 调试大法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服