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 logginglogging.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 FileHandlerlogger = 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模块来系统地记录报错信息,定位问题更加方便!
logging日志的使用相关推荐
- day31 logging 日志模块
1 # logging 日志模块 ****** 2 # 记录用户行为或者代码执行过程 3 # print 来回注释比较麻烦的 4 # logging 5 # 我能够"一键"控制 6 ...
- Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略
Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略 目录 logging日志用法之详细攻略 logging日志用法之详细攻略 K Llogging.basicConfig( ...
- 第15章 SpringBoot集成logging日志
第15章 SpringBoot集成logging日志 15.1 SLF4J与Logback简介 15.2 spring-boot-starter-logging 15.3 logback-spring ...
- 操作系统服务:logging日志记录模块
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪. 在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...
- python log日志_Python中logging日志的四个等级和使用
1. logging日志的介绍 在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录:飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在咱们python程序中想要记录程序 ...
- python写日志文件_Python logging日志模块 配置文件方式
在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今 ...
- ROS与Arduino学习(六)Logging日志
ROS与Arduino学习(六)Logging日志 Tutorial Level:客户端与服务器 Next Tutorial:小案例节点通信 本节较为简单告诉大家如何向系统发布日志信息. T ...
- python日志输入 print 常用格式化符号 logging 日志输出
1 直接使用print函数打印 print("控制台输出日志!") 2 print 格式化输出 # 字符串拼接输出 print("输出结果:%s" % &quo ...
- 包,logging日志模块,copy深浅拷贝
一 包 package 包就是一个包含了 __init__.py文件的文件夹 包是模块的一种表现形式,包即模块 首次导入包: 先创建一个执行文件的名称空间 1.创建包下面的__init__.py文件的 ...
- python logging日志分割_python logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...
最新文章
- 部署企业私有镜像仓库Harbor
- 第二十五篇 hashlib模块(* *)
- 转盘抽奖(主要:概率和JQ)
- netapp学习(五)---创建volume
- 【计算几何】【预处理】【枚举】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem K. Kiwi Trees...
- remote addr 取到内网ip_内网穿透工具frp
- 随想录(矩阵计算的几种方法)
- php 隐藏路径,急!!!隐藏路径问题
- C:\WINDOWS\system32\drivers\etc\hosts
- 时间字段加一秒_面试Java后端却问我时间轮(Time Wheel)算法,面试官没想到我看过Dubbo源码!...
- php cunstruct,php读取二进制流(C语言结构体struct数据文件)
- 三菱plcascll转换16进制_三菱ASCII码指令
- 常用射频接头之2.92mm
- dom影像图形成数字地形图_航测相关知识点——鲲鹏智汇承接航测相关任务
- 关于refresh token的总结
- 1-2 经济学发展史、实证/规范经济学
- 高并发 高负载 网站系统架构
- vue 封装图片预览组件
- python风格变换图片_利用神经网络轻松把照片转换成梵高风格
- Mastering the game of Go with deep neural networks and tree search翻译
热门文章
- 网络安全技术虚拟私有网(IPSec Sangfor)详解及解决方案
- 如何更改电脑密码?(Windows10为例)
- gcc编译链接动态库
- 获取本地IP地址信息,请求地址,请求的操作系统信息 ,浏览器信息
- codesys 简单案例_CODESYS-2.3-EXAMPLE 基于CODESYS 2.3的工程应用案例程序 - 下载 - 搜珍网...
- 使用Python进行面部合成
- Unity Hub安装Android环境 (Unity2019及以上支持)
- python处理wps表格数据匹配_wps表格怎么匹配重复数据库
- 暗灰色android代码,Android实现制作灰色图片
- 做好seo真很需要耐性