背景

说到日志,无论是开发写代码还是写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日志的使用相关推荐

  1. day31 logging 日志模块

    1 # logging 日志模块 ****** 2 # 记录用户行为或者代码执行过程 3 # print 来回注释比较麻烦的 4 # logging 5 # 我能够"一键"控制 6 ...

  2. Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略

    Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略 目录 logging日志用法之详细攻略 logging日志用法之详细攻略 K Llogging.basicConfig( ...

  3. 第15章 SpringBoot集成logging日志

    第15章 SpringBoot集成logging日志 15.1 SLF4J与Logback简介 15.2 spring-boot-starter-logging 15.3 logback-spring ...

  4. 操作系统服务:logging日志记录模块

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪. 在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...

  5. python log日志_Python中logging日志的四个等级和使用

    1. logging日志的介绍 在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录:飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在咱们python程序中想要记录程序 ...

  6. python写日志文件_Python logging日志模块 配置文件方式

    在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今 ...

  7. ROS与Arduino学习(六)Logging日志

    ROS与Arduino学习(六)Logging日志 Tutorial Level:客户端与服务器 Next Tutorial:小案例节点通信      本节较为简单告诉大家如何向系统发布日志信息. T ...

  8. python日志输入 print 常用格式化符号 logging 日志输出

    1 直接使用print函数打印 print("控制台输出日志!") 2 print 格式化输出 # 字符串拼接输出 print("输出结果:%s" % &quo ...

  9. 包,logging日志模块,copy深浅拷贝

    一 包 package 包就是一个包含了 __init__.py文件的文件夹 包是模块的一种表现形式,包即模块 首次导入包: 先创建一个执行文件的名称空间 1.创建包下面的__init__.py文件的 ...

  10. python logging日志分割_python logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...

最新文章

  1. 部署企业私有镜像仓库Harbor
  2. 第二十五篇 hashlib模块(* *)
  3. 转盘抽奖(主要:概率和JQ)
  4. netapp学习(五)---创建volume
  5. 【计算几何】【预处理】【枚举】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem K. Kiwi Trees...
  6. remote addr 取到内网ip_内网穿透工具frp
  7. 随想录(矩阵计算的几种方法)
  8. php 隐藏路径,急!!!隐藏路径问题
  9. C:\WINDOWS\system32\drivers\etc\hosts
  10. 时间字段加一秒_面试Java后端却问我时间轮(Time Wheel)算法,面试官没想到我看过Dubbo源码!...
  11. php cunstruct,php读取二进制流(C语言结构体struct数据文件)
  12. 三菱plcascll转换16进制_三菱ASCII码指令
  13. 常用射频接头之2.92mm
  14. dom影像图形成数字地形图_航测相关知识点——鲲鹏智汇承接航测相关任务
  15. 关于refresh token的总结
  16. 1-2 经济学发展史、实证/规范经济学
  17. 高并发 高负载 网站系统架构
  18. vue 封装图片预览组件
  19. python风格变换图片_利用神经网络轻松把照片转换成梵高风格
  20. Mastering the game of Go with deep neural networks and tree search翻译

热门文章

  1. 网络安全技术虚拟私有网(IPSec Sangfor)详解及解决方案
  2. 如何更改电脑密码?(Windows10为例)
  3. gcc编译链接动态库
  4. 获取本地IP地址信息,请求地址,请求的操作系统信息 ,浏览器信息
  5. codesys 简单案例_CODESYS-2.3-EXAMPLE 基于CODESYS 2.3的工程应用案例程序 - 下载 - 搜珍网...
  6. 使用Python进行面部合成
  7. Unity Hub安装Android环境 (Unity2019及以上支持)
  8. python处理wps表格数据匹配_wps表格怎么匹配重复数据库
  9. 暗灰色android代码,Android实现制作灰色图片
  10. 做好seo真很需要耐性