python的日志模块

logging模块

1.日志级别:
调试信息->正常信息->警告信息->错误信息->严重错误
logging默认打印警告信息级别以上

import logging

logging.debug("调试信息")
logging.info("正常信息")
#只有下面三个有打印
logging.warning("警告信息")
logging.error("错误信息")
logging.critical("严重错误信息")

2.存储日志信息
import logging

logging.basicConfig(filename="1.txt")#追加方式存储
logging.debug("调试信息")
logging.info("正常信息")
#只有下面三个有打印
logging.warning("警告信息")
logging.error("错误信息")
logging.critical("严重错误信息")

#日志存储案例
logging.basicConfig(filename="2.txt")
def mytest(a,b):
    if b==0:
        logging.critical("除数不能0")
    return a/b

mytest(10,0)


3.logging的配置
#表示存储到xx.txt的日志级别最低是debug级别
logging.basicConfig(filename="xx.txt",level=logging.DEBUG)

#表示存储到xx.txt的加上时间和用户输出的信息
logging.basicConfig(filename="xx.txt",format='%(asctime)s %(message)s')


4.logging高级使用
介绍4个东东,记录器,处理器,过滤器,格式化器
logger:记录器,应用程序代码能直接使用的接口。
handler:处理器,将(记录器产生的)日志记录发送到合适的目的地
filter:过滤器,提供了更好的粒度控制,可以决定输出哪些日志记录
formatter:格式化器,指明了最终输出中日志记录的布局。

#!/usr/bin/env python
# -*- coding:utf-8 -*-  
#====#====#====#====   
#Author:
#CreatDate:
#Version: 
#====#====#====#====
#调试信息->正常信息->警告信息->错误信息->严重错误
import logging

#1.创建记录器,并给记录器取名字
logger=logging.getLogger("maker")
#设置日志级别
logger.setLevel(logging.INFO)#2

#2.创建2个处理器,一个把日志发送到终端,一个把日志发送到文件中
ch=logging.StreamHandler()#发送到终端
ch.setLevel(logging.DEBUG)#1

fh=logging.FileHandler(filename="666.txt")
fh.setLevel(logging.WARNING)#3

#创建过滤器,过滤含abc的字符串
class stringFilter(logging.Filter):
    def filter(self,record):
        if record.msg.find("abc")==-1:
            return True
        return False

#4.创建格式化器
form=logging.Formatter("%(asctime)s -- %(name)s -- %(message)s")

#关联
#格式化器放到处理器里
ch.setFormatter(form)
fh.setFormatter(form)

#过滤器放到ch处理器中
ch.addFilter(stringFilter())

#处理器放到记录器中
logger.addHandler(ch)
logger.addHandler(fh)


logger.debug("调试信息")
logger.info("正常信息")
logger.warning("警告信息")
logger.error("错误")
logger.critical("严重错误")
logger.warning("abcdef")

设置的日志级别以高为准

#实战:
#!/usr/bin/env python
# -*- coding:utf-8 -*-  
#====#====#====#====   
#Author:
#CreatDate:
#Version: 
#====#====#====#====

from selenium import webdriver
import unittest
import time
from mylog import logger
import traceback

class Maker(unittest.TestCase):

    def setUp(self):
        self.dr=webdriver.Firefox()

    def test_01(self):
        self.dr.get("https://www.baidu.com")
        time.sleep(2)
        try:
            e=self.dr.find_element_by_link_text("新")
        except Exception as e:
            # mystr1=f'出错的文件是:{e.__traceback__.tb_frame.f_globals["__file__"]}'
            # mystr2=f'第:{e.__traceback__.tb_lineno} 行'
            # mystr=mystr1+mystr2
            # print(mystr)

            logger.critical("严重错误,没有该元素")
            logger.error(traceback.format_exc())
        finally:
            self.dr.quit()

        e.click()


    def tearDown(self):
        time.sleep(3)
        self.dr.quit()

if __name__=='__main__':
    unittest.main()
    
mylog.py:
#!/usr/bin/env python
# -*- coding:utf-8 -*-  
#====#====#====#====   
#Author:
#CreatDate:
#Version: 
#====#====#====#====
#调试信息->正常信息->警告信息->错误信息->严重错误
import logging

#1.创建记录器,并给记录器取名字
logger=logging.getLogger("maker")
#设置日志级别
logger.setLevel(logging.INFO)#2

#2.创建2个处理器,一个把日志发送到终端,一个把日志发送到文件中
ch=logging.StreamHandler()#发送到终端
ch.setLevel(logging.DEBUG)#1

fh=logging.FileHandler(filename="666.txt")
fh.setLevel(logging.WARNING)#3

#创建过滤器,过滤含abc的字符串
class stringFilter(logging.Filter):
    def filter(self,record):
        if record.msg.find("abc")==-1:
            return True
        return False

#4.创建格式化器
form=logging.Formatter("%(asctime)s -- %(name)s -- %(message)s")

#关联
#格式化器放到处理器里
ch.setFormatter(form)
fh.setFormatter(form)

#过滤器放到ch处理器中
ch.addFilter(stringFilter())

#处理器放到记录器中
logger.addHandler(ch)
logger.addHandler(fh)


# logger.debug("调试信息")
# logger.info("正常信息")
# logger.warning("警告信息")
# logger.error("错误")
# logger.critical("严重错误")
# logger.warning("abcdef")
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

渊途

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值