日志级别

debug、info、warn、error、critical五个级别

logging模块构成(四部分)

logger(记录器,用于日志采集)

Handler(处理器,将日志记录发送到合适的路径)

Filter(过滤器,提供了更好的粒度控制,决定输出哪些日志记录)

Formatter(格式化起,指明了日志的格式)

logger(记录器)

在使用debug、info、warn、error、critical五个级别之前创建logging实例

方法:basicConfig()为日志记录系统做基础配置

# -*- coding: utf-8 -*-#

import logging
# 根据日志级别输出
# logging.basicConfig(level=logging.INFO)
logging.basicConfig(level=logging.CRITICAL) logging.debug("debug info")
logging.info("hello world")
logging.warning("warnning info")
logging.error("error info")
logging.critical("critical info")

Handler(处理器)

1.StreamHandler

将日志记录输出发送到sys.stdout,sys.stderr货值任何类似文件流的对象,上面的例子就是输出到控制台

2.FileHandler

将日志记录输出发送到磁盘文件,继承了StreamHandler的输出功能

logging.basicConfig(filename="runlog.log",lever=logging.DEBUG)

运行后当前脚本路径会生成一个runlog.log文件,用于记录日志

3.NullHandler

不做任何格式化或输出,本质是一个开发人员使用“无操作”处理程序。

Filter(过滤器)

可以使用Filters来完成比级别更加复杂的过滤

Formatter

使用Formatter对象设置日志信息最后的规则、结构和内容,默认的时间为%Y-%m-%d %H%M%S

%(levelno)s                       打印日志级别数值

%(levelname)s                   打印日志级别名称

%(pathname)s                   打印当前执行程序路径

%(filename)s                      打印当前执行程序名称

%(funcName)s                    打印日志当前函数

%(lineno)d                          打印日志当前行号

%(asctime)s                        打印日志时间

%(thread)d                          打印线程id

%(threadName)s                 打印线程名称

%(process)s                        打印进程ID

%(message)s                       打印日志信息

方法:

logging.basicConfig(level=logging.DEBUG,filename="runlog.log",format="%(asctime)s%(filename)s[line:%(lineno)d] %(levelname)s %(message)s")

打开淘宝实例:

# -*- coding: utf- -*-#

from appium import webdriver
import yaml
import logging
from selenium.common.exceptions import NoSuchElementException file = open('../xxx.yaml',encoding="utf-8")
data = yaml.load(file,yaml.FullLoader) logging.basicConfig(level=logging.DEBUG,filename="runlog.log",format="%(asctime)s%(filename)s [line:%(lineno)d] %(levelname)s %(message)s") desired_caps={
"platformName": data["platformName"],
"platformVersion": data["platformVersion"],
"deviceName": data["deviceName"],
"appPackage": data["appPackage"],
"appActivity": data["appActivity"],
"unicodeKeyboard":data["unicodeKeyboard"],
"resetKeyboard":data["resetKeyboard"],
"noReset": data["noReset"]
}
logging.info("logging app...")
driver = webdriver.Remote('http://'+str(data['ip'])+':'+str(data['port'])+'/wd/hub',desired_caps) #检测同意协议弹窗
def check_agreebtn():
logging.info("check_agreebtn")
try:
agreebtn=driver.find_element_by_id('com.taobao.taobao:id/provision_positive_button')
except NoSuchElementException:
logging.info("no agreebtn")
else:
agreebtn.click() def check_localtionbtn():
logging.info("check_localtionbtn")
try:
localtionbtn=driver.find_element_by_id('com.taobao.taobao:id/uik_mdButtonDefaultPositive')
except NoSuchElementException:
logging.info("no localtionbtn")
else:
localtionbtn.click() check_agreebtn()
check_localtionbtn()

python+Appium自动化:日志logging模块的更多相关文章

  1. python+Appium自动化:logging配置代码分离

    配置文件信息log.conf: [loggers]keys=root,simpleExample [logger_root]level=DEBUGhandlers=consoleHandler,fil ...

  2. Python开发之日志记录模块:logging

    1 引言 最近在开发一个应用软件,为方便调试和后期维护,在代码中添加了日志,用的是Python内置的logging模块,看了许多博主的博文,颇有所得.不得不说,有许多博主大牛总结得确实很好.似乎我再写 ...

  3. python中日志logging模块的性能及多进程详解

    python中日志logging模块的性能及多进程详解 使用Python来写后台任务时,时常需要使用输出日志来记录程序运行的状态,并在发生错误时将错误的详细信息保存下来,以别调试和分析.Python的 ...

  4. python基础学习十 logging模块详细使用【转载】

    很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...

  5. Python进阶(十一)----包,logging模块

    Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: ​ 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文 ...

  6. Python 入门之 内置模块 --logging模块

    Python 入门之 内置模块 --logging模块 1.logging -- 日志 (1)日志的作用: <1> 记录用户信息 <2> 记录个人流水 <3> 记录 ...

  7. day18包的使用与日志(logging)模块

    包的使用与日志(logging)模块1. 什么是包    包就是一个包含有__init__.py文件的文件夹    包本质就是一种模块,即包是用包导入使用的,包内部包含的文件也都是用来被导入使用2 为 ...

  8. 【python接口自动化】- logging日志模块

    前言:我们之前运行代码时都是将日志直接输出到控制台,而实际项目中常常需要把日志存储到文件,便于查阅,如运行时间.描述信息以及错误或者异常发生时候的特定上下文信息. logging模块介绍 ​ Pyth ...

  9. Python自动化之logging模块

    Logging模块构成 主要分为四个部分: Loggers:提供应用程序直接使用的接口 Handlers:将Loggers产生的日志传到指定位置 Filters:对输出日志进行过滤 Formatter ...

随机推荐

  1. php 字典升序从小到大方法

    /* 字典升序*/ function formatParaMap($paraMap) { $buff = ""; ksort($paraMap); foreach ($paraMa ...

  2. php 大数组 foreach 循环嵌套的性能优化

    前提:最近在做后台的时候,页面加载太慢,故第一时间想到的自然是优化SQL, 优化后sql查询速度从 2秒变成了零点几秒, 以为就这麽完事了,然并卵,加载竟然花费30秒! 这麽慢,然后在代码中分块记录它 ...

  3. 单线程与多线程的应用 --Python3

    1.单线程应用 from time import ctime, sleep from time import ctime, sleep class ThreadClass: def say(self) ...

  4. 解决maven打包时,会编译特定文件导致文件不可用

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resou ...

  5. MySQL(六) 索引

    索引与优化 1.选择索引的数据类型 MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响.通常来说,可以遵循以下一些指导原则: (1)越小的数据类型通常更好:越小的数据类型通常在磁 ...

  6. Power BI学习

    常见用途: 1.连接数据 2.转换和清洗该数据,以创建数据模型 3.创建视觉对象,如提供数据的可视化表示形式的图表或图形 4.在一个或者多个报表页上创建作为视觉对象集合的报表 5.使用Power BI ...

  7. Idea中一个服务按多个端口同时启动

    1.勾选并行启动 2.-Dserver.port=9018

  8. Linux Mysql 备份与还原

    1. 备份 cd /var/lib/mysql //进入到MySQL库目录 mysqldump -u root -p 数据库>/root/backup/数据库.sql 然后输入密码 2. 还原 ...

  9. C# Entity Framework The ObjectContext instance has been disposed and can no longer be used for operations that require a connection

    The ObjectContext instance has been disposed and can no longer be used for operations that require a ...

  10. (十二)Hibernate中的多表操作(2):单向多对一

    由“多”方可知“一”方的信息,比如多个员工使用同一栋公寓,员工可以知道公寓的信息,而公寓无法知道员工的信息. 案例一:使用xml配置 pojo类 Group.java package bean; // ...