Python日志应用


1.Logging日志器生成

# 日志: 日记 记录作用
# 日志作用:系统运行信息

# 学习日志
# 几个组件
# loggers:日志器 程序的入口 别的文件想要调用就用日志器
# handlers处理器:日志信息 输出到你想要的位置 控制台处理器 文本文件处理器
# formatter格式器:处理日志格式 格式比较好看
# filter过滤器

# 日志级别:
# 1.debug级别: 调试级别 1 10
# 2.info级别: 正常级别 2 20
# 3.warning警告: 有问题但不影响程序运行 3
# 4.error级别: 错误的 4
# 5.critical:严重的 程序崩溃 5

# 输出日志信息
import logging

def test_log():
# 设置日志级别 默认级别 warning警告
    fmt = '%(asctime)s %(filename)s %(funcName)s %(levelname)s %(message)s'
    logging.basicConfig(level = logging.INFO,format = fmt,filename='log.txt')
    return logging

log = test_log()
log.info('aaaaaa')


# 打印日志信息
# try..except 你用info调用的日志信息就是打印正常的日志信息
# 你用error调用的日志信息就是错误的日志信息
# logging.debug('调试的日志信息')
# logging.info('正常日志信息')
# logging.warning('警告的日志信息')
# logging.error('错误的日志信息')
# logging.critical('严重的日志信息')

# 日志信息很像print
# 用日志信息可以自己设置格式,可以保存到文本文件
# 什么时间生成的日志 在哪个文件生成的日志 在哪个函数生成的日志

# basicConfig 生成日志文件很简单
# 有缺点:控制台,日志信息保存在文件中后,会显示在文本里面控制台里面就没有。不会同时存在
# 中文会乱码,需要到basicConfig的底层去修改utf-8
# 没怎么用,自己封装下日志

2.ini文件

[loggers]
keys = root

[handlers]
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=('log2.txt','a','utf-8')

;创建具体的格式
[formatter_simpleFormatter]
format = '%(asctime)s %(filename)s %(funcName)s %(levelname)s %(message)s'

3.Logging日志配置应用

# webdriver用日志信息
import time
# from selenium import webdriver
from class16.demo1 import test_log

# log = test_log()
from class16.demo2 import test_log2

# a = test_log2()

import logging.config
# ini文件调用
logging.config.fileConfig('log.ini')
a=logging.getLogger()
class BasePage:
    # driver = webdriver.Chrome()
    def __init__(self,driver):
        self.driver = driver

    def open(self,txt):
        # log.info()
        try:
            a.info(f'访问{txt}')
            self.driver.get(txt)
        except Exception as e:
            a.error('没有访问到网址')

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

    #  想要把输入的操作记录下来 调用info或者error
    #  不可能每次都记录正确的,错误了 用error
    #  用日志 先拿到你封装的日志, 再用info或者error调用
    #  用不用日志取决于自己 想把这个步骤记录下来 就像print一样
    #  登录流程
    #   try:
    #       输入账户名 输入密码 登录
    #       log.info()
    #   except:
    #       log.error()
    def on_input(self,name,value,txt):
        try:
            # log.info(f'通过{name}{value}输入{txt}')
            a.info(f'通过{name}{value}输入{txt}')
            self.locator(name,value).send_keys(txt)
        except Exception as e:
            # log.error('输入错误了%s'%e)
            a.error('输入错误了%s'%e)

    def on_click(self,name,value):
        # log.info(f'通过{name}{value}进行点击')
        a.info(f'通过{name}{value}进行点击')
        self.locator(name, value).click()

    def wait(self):
        time.sleep(3)

    def close(self):
        self.driver.quit()

4.日志器封装

# loggers:日志器 程序的入口 别的文件想要调用就用日志器
# handlers处理器:日志信息 输出到你想要的位置 控制台处理器 文本文件处理器
# formatter格式器:处理日志格式 格式比较好看
# filter过滤器

# 两种封装 一个是basicConfig,一个是自己封装的
# 意思:使日志信息 格式是我们想要的,日志能保存在控制台 能保存在文本文件
import logging

def test_log2():
   # 创建日志器 这个日志器就写入了日志信息
   logger = logging.getLogger('root')
   # 显示日志信息全面 设置日志级别
   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)

       # 日志比较丑,设置格式 创建格式器
       fmt = '%(asctime)s %(filename)s %(funcName)s %(levelname)s %(message)s'
       formatter1 = logging.Formatter(fmt)

       # 给谁加格式
       # 给控制台加格式
       sh.setFormatter(formatter1)
       fh.setFormatter(formatter1)
   return logger

# 要用的时候才调用info 封装一下

# logger.debug('调试的日志信息')
# logger.info('正常日志信息')
# logger.warning('警告的日志信息')
# logger.error('错误的日志信息')
# logger.critical('严重的日志信息')


# 封装日志 有三种方式 1.basicConfig 2.自定义函数封装 3.ini文件封装
# 使用的话 拿到封装文件.info()或者拿到封装文件.error
# 这种方式用的多
# 重要 重要 项目 加上日志 不重要 封装一次 后续只要使用即可
# 我们还是要会

# 再有一个不用你们封装的日志 直接拿来用的日志

5.Logging日志装饰器应用——luckylog

# 1.安装pip install luckylog 导包
# 2.给一个路径 日志信息放在哪个文件的路径
# 3.把哪些信息保存在luckylog.txt文件里面
# 4.设置错误的路径
import time
# from selenium import webdriver
from luckylog.luckylog import Logger,logger
from luckylog import luckylog

# 正确的日志信息
luckylog.path='logSuccess.txt'
luckylog.module = 'success'

# 错误的日志信息
luckylog.debug_file='logError.txt'

#想要日志信息更加的详细
luckylog.Debug = True


class BasePage:
    # driver = webdriver.Chrome()
    def __init__(self,driver):
        self.driver = driver

    @logger(success='成功打开网址',fail = '失败网址')
    def open(self,txt):
        self.driver.get(txt)

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

    #  想要把输入的操作记录下来 调用info或者error
    #  不可能每次都记录正确的,错误了 用error
    #  用日志 先拿到你封装的日志, 再用info或者error调用
    #  用不用日志取决于自己 想把这个步骤记录下来 就像print一样
    #  登录流程
    #   try:
    #       输入账户名 输入密码 登录
    #       log.info()
    #   except:
    #       log.error()
    @logger(success='成功输入内容',fail='失败输入内容')
    def on_input(self,name,value,txt):
        self.locator(name,value).send_keys(txt)

    @logger(success='成功点击', fail='失败点击')
    def on_click(self,name,value):
        self.locator(name, value).click()

    def wait(self):
        time.sleep(3)

    def close(self):
        self.driver.quit()

6.调用

from selenium import webdriver
# from class16.base import BasePage
from class16.base1 import BasePage


a = BasePage(webdriver.Chrome())
a.open('http://www.baidu.com')
a.on_input('id','kw','秋水')
a.wait()
a.on_click('id','su')
a.wait()
a.close()

# 小的项目 记录每一步操作 日志去记录

# 用 日志怎么用?
# 日志信息 记录每一步操作
# 打开了浏览器
# 访问了百度
# 输入了秋水
# 点击了搜索按钮
# 关闭
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司小幽

真诚赞赏,手留余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值