日志模块可以通过封装一个类,也可以通过配置文件取管理

新建1个log.ini文件

  1. [loggers]
  2. keys=root
  3.  
  4. [handlers]
  5. keys=fileHandler,streamHandler
  6.  
  7. [formatters]
  8. keys=simpleFormatter
  9.  
  10. [logger_root]
  11. level=INFO
  12. handlers=fileHandler,streamHandler
  13.  
  14. [handler_fileHandler]
  15. class=FileHandler
  16. level=INFO
  17. formatter=simpleFormatter
  18. args=('mylog.log','a','utf-8')
  19.  
  20. [handler_streamHandler]
  21. class=StreamHandler
  22. level=INFO
  23. formatter=simpleFormatter
  24.  
  25. [formatter_simpleFormatter]
  26. format=%(asctime)s %(filename)s %(levelname)s %(funcName)s %(message)s

在程序中进行调用

  1. '''
  2. 使用配置文件,进行设置日志
  3. '''
  4.  
  5. import logging.config
  6. import time
  7.  
  8. # 拿到配置文件
  9. logging.config.fileConfig('../Data/log.ini')
  10. # 拿到日志器
  11. log =logging.getLogger()
  12.  
  13. class BasePage:
  14. # 想要把操作记录在日志文件中。调用日志中的级别
  15. def __init__(self, driver):
  16. log.info('初始化driver{}'.format(driver))
  17. self.driver = driver
  18.  
  19. def open(self, url):
  20. log.info('正在访问网址{}'.format(url))
  21. self.driver.get(url)
  22.  
  23. def locator(self, name, value):
  24. return self.driver.find_element(name, value)
  25.  
  26. def on_input(self, name, value, txt):
  27. try:
  28. log.info('正在定位{}元素,元素值为{},输入的内容为{}'.format(name, value, txt))
  29. self.locator(name, value).send_keys(txt)
  30. except Exception as e:
  31. log.error('输入内容失败%s' % e)
  32.  
  33. def on_click(self, name, value):
  34. try:
  35. log.info('正在定位{}元素,元素值为{},进行点击'.format(name, value))
  36. self.locator(name, value).click()
  37. except Exception as e:
  38. log.error('点击按钮失败%s' % e)
  39.  
  40. def wait(self, t):
  41. log.info('正在等待')
  42. time.sleep(t)
  43.  
  44. def close(self):
  45. log.info('关闭浏览器')
  46. self.driver.quit()

进行使用:

  1. # from Study.Practices.practice5 import BasePage
  2. from Study.Practices.BaseLog import BasePage
  3. from selenium import webdriver
  4.  
  5. driver=BasePage(webdriver.Chrome())
  6. driver.open('http://www.baidu.com')
  7. driver.on_input('id','kw','秋水')
  8. driver.on_click('id','su')
  9. driver.wait(3)
  10. driver.on_click('xpath','//*[@id="1"]/h3/a/em')
  11. driver.wait(3)
  12. driver.close()

控制台产生日志

  1. C:\Users\ceshi001\PycharmProjects\pythonstudy\venv\Scripts\python.exe C:/Users/ceshi001/PycharmProjects/pythonstudy/Study/Practices/practice2.py
  2. 2021-04-28 15:39:02,159 BaseLog.py INFO __init__ 初始化driver<selenium.webdriver.chrome.webdriver.WebDriver (session="520f01d9b7f6aca1b0d1d4f8ce54c39f")>
  3. 2021-04-28 15:39:02,159 BaseLog.py INFO open 正在访问网址http://www.baidu.com
  4. 2021-04-28 15:39:02,810 BaseLog.py INFO on_input 正在定位id元素,元素值为kw,输入的内容为秋水
  5. 2021-04-28 15:39:02,909 BaseLog.py INFO on_click 正在定位id元素,元素值为su,进行点击
  6. 2021-04-28 15:39:03,011 BaseLog.py INFO wait 正在等待
  7. 2021-04-28 15:39:06,012 BaseLog.py INFO on_click 正在定位xpath元素,元素值为//*[@id="1"]/h3/a/em,进行点击
  8. 2021-04-28 15:39:06,078 BaseLog.py INFO wait 正在等待
  9. 2021-04-28 15:39:09,080 BaseLog.py INFO close 关闭浏览器
  10.  
  11. Process finished with exit code 0

文件中产生日志:

  1. 2021-04-28 15:39:02,159 BaseLog.py INFO __init__ 初始化driver<selenium.webdriver.chrome.webdriver.WebDriver (session="520f01d9b7f6aca1b0d1d4f8ce54c39f")>
  2. 2021-04-28 15:39:02,159 BaseLog.py INFO open 正在访问网址http://www.baidu.com
  3. 2021-04-28 15:39:02,810 BaseLog.py INFO on_input 正在定位id元素,元素值为kw,输入的内容为秋水
  4. 2021-04-28 15:39:02,909 BaseLog.py INFO on_click 正在定位id元素,元素值为su,进行点击
  5. 2021-04-28 15:39:03,011 BaseLog.py INFO wait 正在等待
  6. 2021-04-28 15:39:06,012 BaseLog.py INFO on_click 正在定位xpath元素,元素值为//*[@id="1"]/h3/a/em,进行点击
  7. 2021-04-28 15:39:06,078 BaseLog.py INFO wait 正在等待
  8. 2021-04-28 15:39:09,080 BaseLog.py INFO close 关闭浏览器

Python日志模块的管理(二)的更多相关文章

  1. python日志模块logging

    python日志模块logging   1. 基础用法 python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.INFO.WARNING.ERROR.CRITICAL五种( ...

  2. Python 日志模块实例

    python 打印对象的所有属性值: def prn_obj(obj):     print '\n'.join(['%s:%s' % item for item in obj.__dict__.it ...

  3. python日志模块

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

  4. Python::OS 模块 -- 进程管理

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的文件相关操作参看 Python::OS 模块 -- 文件和目录操作 os模块的进程参数 Python::OS 模块 -- 进程参数 ...

  5. Python日志模块logging用法

    1.日志级别 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL. DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期运行 ...

  6. python日志模块的使用

    学习一下python的日志模块logging,可以参考如下博客,写得很详细 https://www.cnblogs.com/yyds/p/6901864.html https://www.cnblog ...

  7. python日志模块logging学习

    介绍 Python本身带有logging模块,其默认支持直接输出到控制台(屏幕),或者通过配置输出到文件中.同时支持TCP.HTTP.GET/POST.SMTP.Socket等协议,将日志信息发送到网 ...

  8. python日志模块笔记

    前言 在应用中记录日志是程序开发的重要一环,也是调试的重要工具.但却很容易让人忽略.之前用flask写的一个服务就因为没有处理好日志的问题导致线上的错误难以察觉,修复错误的定位也很困难.最近恰好有时间 ...

  9. Python 日志模块详解

    前言 我们知道查看日志是开发人员日常获取信息.排查异常.发现问题的最好途径,日志记录中通常会标记有异常产生的原因.发生时间.具体错误行数等信息,这极大的节省了我们的排查时间,无形中提高了编码效率.所以 ...

随机推荐

  1. MyBatis 模糊查询的 4 种实现方式

    引言 MyBatis 有 4 种方式可以实现模糊查询. 员工信息表 ( tb_employee ) 如下: id name sex email birthday address 001 张一凡 男 z ...

  2. C语言的指针数组与指针数组

    一.指针数组与指针数组 1,指针数组 顾名思义,即一个元素全部是指针的数组,其形式与普通数组相似,形式如 *a[N]. 在理解指针数组的使用方式前,我先来说下我个人对数组的理解. 比如一维整形数组(形 ...

  3. IDEA 快速上手指南(全配置)(Day_23)

    Idea快速入门指南 1.安装 1.1.安装 我们使用的是2017.3.4版本: 双击打开, 选择一个目录,最好不要中文和空格: 然后选择桌面快捷方式,请选择64位: 然后选择安装: 开始安装: 然后 ...

  4. tomcat---starup.bat点击窗口自动关闭

  5. gin使用validator库参数校验若干实用技巧

    validator库参数校验若干实用技巧 本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息.自定义提示信息的字段名称.自定义校验方法等. validato ...

  6. guava cache 缓存

    1.guava缓存 新建一个缓存对象cache,当取不到key对应的值时,生成一个,并插入到cache中 LoadingCache<String,String> cache = Cache ...

  7. NVIDIA CUDA-X AI

    NVIDIA CUDA-X AI 面向数据科学和 AI 的 NVIDIA GPU 加速库 数据科学是推动 AI 发展的关键力量之一,而 AI 能够改变各行各业. 但是,驾驭 AI 的力量是一个复杂挑战 ...

  8. SpringBoot+SpringDataJpa快速上手(基本CRUD)

    以及表结构和数据 依赖 <!-- 如果有SpringBoot启动器,就不加--> <parent> <groupId>org.springframework.boo ...

  9. Qt项目ui文件中新添加的控件在代码中不识别的问题解决

    今天在学Qt框架的信号槽,然后发现在ui中加的控件,通过ui-> 找不到,没有识别,于是上网查找了一下问题 解决方法 添加ui控件后,执行程序,退出程序,将debug目录下的ui_XXXX.h拷 ...

  10. C语言const关键字的作用

    1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <string.h> 4 #include ...