日志和日志封装

日志使用logging模块!!!

日志收集器:

1、日志级别(Level):DEBUG、INFO、WARNING、ERROR、CRITICAL(FATAL)

2、输出渠道(Handle):控制台(StreamHandle)、文件(FileHandle)。

3、日志内容(Format):时间-哪个文件-哪行代码-输出内容

logging模块,默认的root日志收集器。默认的输出级别:WARNING

第一步:

创建一个日志收集器:logging.getLogger("收集器的名字")

第二步:

给日志收集器,设置日志级别:logger.setLevel(logging.INFO)

第三步:

给日志收集器,创建一个输出渠道。handle1 = logging.StreamHandler()

第四步:

给渠道,设置一个日志输出内容的格式。

第五步:

将设置的格式,绑定到渠道当中。将格式与渠道关联起来。

第六步:

将设置好的渠道,添加到日志收集器上。

import logging

# logging.info("hello,py30,第一次日志输出操作!!")

logging.warning("hello,py30,第一次警告级别的日志输出操作!!")

logger = logging.getLogger("nmb-py30")

# 设置日志输出级别。

logger.setLevel(logging.INFO)

# 设置日志输出在哪些渠道

handle1 = logging.StreamHandler()

# 设置渠道自己的输出级别。

handle1.setLevel(logging.ERROR)

# 设置渠道的输出内容格式

fmt ='%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d line:%(message)s'

formatter = logging.Formatter(fmt)

# 将日志格式绑定到渠道当中。

handle1.setFormatter(formatter)

# 第六步:

# 将设置好的渠道,添加到日志收集器上。

logger.addHandler(handle1)

# 添加fileHandle

handle2 = logging.FileHandler("my_py30.log",encoding="utf-8")

handle2.setFormatter(formatter)

logger.addHandler(handle2)

logger.info("hello,py30,我的第一个收集器设置成功了吗??")

logger.error("ERRor1111!!!!!")

from loggingimport handlers

封装日志类

import logging

class MyLogger(logging.Logger):

def __init__(self,name,level=logging.INFO,file=None):

# 设置输出级别、输出渠道、输出日志格式

        super().__init__(name,level)

# 日志格式

        fmt ='%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d line:%(message)s'

        formatter = logging.Formatter(fmt)

# 控制台渠道

        handle1 = logging.StreamHandler()

handle1.setFormatter(formatter)

self.addHandler(handle1)

if file:

# 文件渠道

            handle2 = logging.FileHandler(file,encoding="utf-8")

handle2.setFormatter(formatter)

self.addHandler(handle2)

if __name__ =='__main__':

mlogger = MyLogger("py30",file="my_logger.log")

mlogger.info("测试,我自己封装的日志类!!!!")

结合ddt使用的日志表达

@ddt

class TestLogin(unittest.TestCase):

@data(*cases)

def test_login(self,case):

logger.info("***********  开始执行测试用例 **************")

logger.info("测试数据为:{}".format(case))

# 1、测试数据 # 2、测试步骤

        res = login_check(case["user"],case["passwd"])

logger.info("实际运行结果为:{}".format(res))

# 3、断言:预期结果与实际结果的比对

        try:

self.assertEqual(res,eval(case["check"]))

except AssertionError:

logger.exception("断言失败,用例不通过!")

raise

        else:

logger.info("断言成功,用例通过!")

logger.info("***********  测试用例执行结束 **************")


你可能感兴趣的:(日志和日志封装)