千纸鹤

  博客园  ::  :: 新随笔  ::  ::  :: 管理
  5 随笔 :: 70 文章 :: 0 评论 :: 9301 阅读
《一》日志作用
能够记录系统运行信息(出现问题 定位问题)
《二》日志组件
1.logger:日志器(程序的入口,文件想要调用日志)
2.handler:处理器(日志信息显示到的位置:控制台 文本)
3.formatter:格式器(日志显示格式)
《三》日志级别
1.第一级别:debug(调试级别)
2.第二级别:info(正常级别)
3.第三级别:warning(警告级别,不影响程序:如:用户登录密码错误)
4.第四级别:error(错误级别,普通报错,如:IO操作失败)
5.第五级别:critical(严重级别,程序崩溃,如:磁盘空间为空)
日志等级从低到高的顺序:DEBUG < INFO < WARNING < ERROR < CRITICAL
常用级别:info(正常级别) error(错误级别)
默认级别:warning(警告级别)
《四》日志应用
a.公有代码
  (1)basePage1.py
   import logging
import time
from selenium import webdriver

class BasePage:
def __init__(self, driver):
log.info('初始化浏览器{}'.format(driver))
self.driver = driver

def open(self,url):
log.info('正在打开{}网址'.format(url))
self.driver.get(url)

def locator(self,name,value):
return self.driver.find_element(name,value)

def on_input(self,name,value,txt):
try:
log.info('通过{}方式,找到{}值,输入{}内容'.format(name,value,txt))
self.locator(name, value).send_keys(txt)
except Exception as e:
log.error('输入有问题%s'%e)

def on_click(self,name,value):
log.info('通过{}方式,找到{}值,进行点击'.format(name, value))
self.locator(name, value).click()

def wait(self,t):
log.info('正在等待')
time.sleep(t)

def close(self):
log.info('正在关闭')
self.driver.quit()
(2)test.py
   from basePage1 import BasePage
from selenium import webdriver
  
driver=BasePage(webdriver.Chrome())
driver.open('http://www.baidu.com')
driver.on_input('id','kw','秋水')
driver.on_click('id','su')
driver.wait(3)
driver.close()
b.第一种写法
  (1)基础配置
    from VvipClass02.class15.demo1 import test_log
log=test_log()
  (2)demo1.py
    import logging
def test_log():
            # 输出:日志的时间、当前执行程序名、日志的当前函数、日志级别名称、日志信息
fmt='%(asctime)s %(filename)s %(funcName)s %(levelname)s %(message)s'
# 基础配置(固定写法):设置日志级别,日志格式,日志文件名
logging.basicConfig(level=logging.INFO,format=fmt,filename='log1.log')
return logging
  (3)将基础配置方法加入到basePage1.py类,运行test.py类,生成的log1.log文件
    2022-05-02 14:21:22,649 basePage1.py __init__ INFO 初始化浏览器<selenium.webdriver.chrome.webdriver.WebDriver (session="df67b3a773cdc1652df15a5102719e11")>
2022-05-02 14:21:22,658 basePage1.py open INFO 正在打开http://www.baidu.com网址
2022-05-02 14:21:23,976 basePage1.py on_input INFO 通过id方式,找到kw值,输入秋水内容
2022-05-02 14:21:24,259 basePage1.py on_click INFO 通过id方式,找到su值,进行点击
2022-05-02 14:21:24,389 basePage1.py wait INFO 正在等待
2022-05-02 14:21:27,393 basePage1.py close INFO 正在关闭
c.第二种写法
  (1)封装配置
    from VvipClass02.class15.demo2 import test_log
    log=test_log()
(2)demo2.py
    import logging
    def test_log():
# 日志器 创建日志器
logger=logging.getLogger()
# 设置级别(从哪个级别开始)
logger.setLevel(logging.INFO)
if not logger.handlers:
# 指定日志信息显示的位置(控制台 文本文件)
# 创建处理器:控制台处理器
sh=logging.StreamHandler()
# 把日志信息显示到控制台
logger.addHandler(sh)

# 创建处理器:文本处理器(设置文件名路径和编码格式)
fh=logging.FileHandler('log1.txt',encoding='utf-8')
# 日志信息显示在文本文件中
logger.addHandler(fh)

# 创建格式器:设置自定义格式(无日志级别)
fmt1='%(asctime)s %(filename)s %(funcName)s %(message)s'
formatter1=logging.Formatter(fmt1)

# 创建格式器:设置自定义格式(有日志级别)
fmt2='%(asctime)s %(filename)s %(funcName)s %(levelname)s %(message)s'
formatter2=logging.Formatter(fmt2)

# 给控制台设置格式
sh.setFormatter(formatter1)
# 给文本文件设置格式
fh.setFormatter(formatter2)
return logger
(3)将封装配置方法加入到basePage1.py类,运行test.py类,生成的log1.txt文件
   2022-05-02 14:45:35,039 basePage1.py __init__ INFO 初始化浏览器<selenium.webdriver.chrome.webdriver.WebDriver (session="3df86b5ec97c7b7b167facd385a42819")>
2022-05-02 14:45:35,040 basePage1.py open INFO 正在打开http://www.baidu.com网址
2022-05-02 14:45:36,498 basePage1.py on_input INFO 通过id方式,找到kw值,输入秋水内容
2022-05-02 14:45:36,674 basePage1.py on_click INFO 通过id方式,找到su值,进行点击
2022-05-02 14:45:36,803 basePage1.py wait INFO 正在等待
2022-05-02 14:45:39,806 basePage1.py close INFO 正在关闭
d.第三种写法
(1)配置文件
    import logging.config
logging.config.fileConfig('log.ini')
log=logging.getLogger()
(2)log.ini
    [loggers] # 日志器
keys=root

[handlers] # 处理器(fh:文本处理器,sh:控制台处理器)
keys=fh,sh

[formatters] # 格式器
keys=simpleFormatter

[logger_root] # 设置日志器功能(设置级别,添加到文本和控制台)
level=INFO
handlers=fh,sh

[handler_sh] # 设置控制台处理器功能(创建控制台,设置格式)
class="StreamHandler"
formatter=simpleFormatter

[handler_fh] # 设置文本处理器功能(创建文本,设置格式,存储位置)
class="FileHandler"
formatter=simpleFormatter
args=('mylog.log','a','utf-8')

[formatter_simpleFormatter] # 自定义的文件格式(日志的时间,当前执行程序名,日志的当前函数,日志级别名称,日志信息)
format=%(asctime)s %(filename)s %(funcName)s %(levelname)s %(message)s
(3)运行test.py类,生成的mylog.log文件
    2022-05-02 14:53:22,389 basePage1.py __init__ INFO 初始化浏览器<selenium.webdriver.chrome.webdriver.WebDriver (session="2ecbb31790f86feaf1da7b53c02febfd")>
2022-05-02 14:53:22,389 basePage1.py open INFO 正在打开http://www.baidu.com网址
2022-05-02 14:53:23,499 basePage1.py on_input INFO 通过id方式,找到kw值,输入秋水内容
2022-05-02 14:53:23,811 basePage1.py on_click INFO 通过id方式,找到su值,进行点击
2022-05-02 14:53:23,907 basePage1.py wait INFO 正在等待
2022-05-02 14:53:26,910 basePage1.py close INFO 正在关闭
posted on   隆江猪脚饭  阅读(76)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示