IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> logging日志的使用 -> 正文阅读

[Python知识库]logging日志的使用

背景

????????说到日志,无论是开发写代码还是写UI自动化测试,都离不开日志的记录,它能给我们在定位问题、缺陷时带来很大的方便。通常测试人员使用最多的方法就是用print来打印出日志和报错信息,但是对于一些项目比较大的项目,使用print就不是那么方便了。因为print打印出来的日志没有时间,不知道日志记录的位置,针对这种情况,我们可以使用python自带的logging模块,可以很好地解决上面问题。

环境准备

编译工具:pycharm
编程语言:python

日志级别

????????在python提供的log模块,一共把日志级别分为5级,分别为:

1、Debug级是最详细的日志信息,典型的应用场场景是问题诊断。

2、INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作。

3、WARNING ?当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的

4、ERROR 由于一个更严重的问题导致某些功能不能正常运行时记录的信息

5、CRITICAL 当发生严重错误,导致应用程序不能继续运行时记录的信息

'''log的使用'''
import logging

logging.basicConfig(level=logging.INFO) ?#设置logging的日志级别
logging.info('infor级调试信息')
logging.debug('debug级调试信息')
logging.warning('warning级调试信息')
logging.error('error级调试信息')
logging.critical('critical级调试信息')

????????其中log日志级别程度逐次增高,默认情况下日志的级别是WARNING,低于WARNING级别的日志都不会被输出。

log日志级别设置

????????上面说过log日志默认输出WARNING级别的,但是我想要输出INFO级的话就需要设置日志级别输出,在开始记录日志前可以使用logging.basicConfig方法来设定日志级别。

logging.basicConfig(level=logging.INFO)  #设置logging的日志级别为INFO
logging.info('输出info级调试信息')
logging.debug('输出debug级调试信息')
logging.warning('输出warning级调试信息')
logging.error('输出error级调试信息')

????????通过设置logging日志级别为INFO后,输出结果如下:

Logging.basicConfig函数说明

????????如果我们想要指定log日志输出的格式、保存路径的话,可以用logging.basicConfig函数来实现,其主要参数使用如下:
1、filename:指定日志说出目标文件的文件名,指定该设置项后日志信息就不会被输出到控制台了。
2、filemode:指定日志文件的打开模式,默认为‘a',需要注意的是,该选项要在filename指定时才有效
3、format:指定日志格式字符串,既指定日志输出时所包含的字段信息以及他们的顺序,logging模块定义的格式字段下面会列出
4、datefmt:指定日期/时间格式,需要注意的是,该选项要在format中包含时间字段%(asctime)s时才有效
5、level:指定日志器的日志级别
6、stream:指定日志输出目标stream,如sys.stdout,sys.stderr以及网络stream。需要说明的是,stream和filename不能同时提供,否则会引发ValueError异常
7、style:Python3.2中新添加的配置项,指定format格式字符串的风格,可取值为“%,{,$”,,默认是'%'。
8、handlers:Python3.3中新添加的配置项,该选项如果被指定,它应该是一个创建了多个handler的可迭代对象,这些handler将会被添加到root logger。需要说明的是:filename,stream和handlers这三个配置项只能有一个存在,不能同时出现2个或3个,否则会引发ValueError异常。

?

mport logging
my_format = '%(asctime)s-%(filename)s-%(module)s-%(lineno)d'  #log日志格式设置,打印当前时间,当前执行的程序名称,当前行号、模块。
logging.basicConfig(
    filename = 'my.log',    #日志文件名称
    level = logging.INFO,     #设置日志级别为INFO级
    format=my_format
)
logging.info('infor')
logging.debug('debug')
logging.warning('warning')
logging.error('error')
logging.critical('critical')

运行代码后打开my,log可以看到记录的log信息。

Logging模块的格式化字符串

????????对个这个格式,我们可以一起使用,每个格式之间需要使用”-”进行连接,如:
my_format = '%(asctime)s-%(filename)s-%(module)s-%(lineno)d'

使用格式

描述信息

字段/属性名称

%(asctime)s

打印日志的时间

asctime

%(filename)s

打印当前执行程序名称

fimename

%(levelname)s

打印日志级别名称

levelname

%(message)s

打印日志信息

message

%(levelno)s

打印日志级别的数值

levelno

%(pathname)s

打印当前执行程序的路径

pathname

%(funcName)s

打印日志的当前函数

funcName

%(lineno)d

打印日志的当前行号

lineno

%(thread)d

打印线程id

thread

%(threadName)s

打印线程名称

threadName

Log处理器

????????什么是log处理器,我的理解就是把记录生成的log日志进行处理的过程,它就像一个搬运工一样,不生产、制造产品,只负责把物品搬运到指定的位置。Python自己内置了很多的处理器,常见的有:
1、StreamHandler标准流处理器,将消息发送到标准输出流、错误流
2、FileHandler文件处理器,将消息发送到文件
3、RotatingFileHandler文件处理器,文件达到指定大小后,启用新文件存储日志。
4、TimedRotatingFileHandler文件处理器,日志以特定的时间间隔轮换日志文件。

例如:
import logging
from logging import StreamHandler
from logging import FileHandler

logger = logging.getLogger(__name__)

# 设置为DEBUG级别
logger.setLevel(logging.DEBUG)

# 标准流处理器,设置的级别为WARAING
stream_handler = StreamHandler()
stream_handler.setLevel(logging.WARNING)
logger.addHandler(stream_handler)

# 文件处理器,设置的级别为INFO
file_handler = FileHandler(filename="test.log")
file_handler.setLevel(logging.INFO)
logger.addHandler(file_handler)

logger.debug("this is debug")
logger.info("this is info")
logger.error("this is error")
logger.warning("this is warning")

?总结

????????以上就是logging日志的基本使用方法,相信掌握以上方法可以帮助我们更好地理解日志的输出、打印和选择,在今后的UI自动化中不局限于仅仅使用print打印,还可以用logging模块来系统地记录报错信息,定位问题更加方便!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:00:05  更:2022-06-29 19:02:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:29:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码