python之logging日志封装

第二节–python自动化测试日志封装

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:这个章节主要介绍python中使用logging自己进行一个简单的日志封装


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 第二节--python自动化测试日志封装
  • 一、日志logging的简单介绍
  • 二、日志的步骤讲解
    • 1.控制台日志输出
    • 2.文件日志输出
    • 3、日志的封装
  • 总结


提示:这里可以添加本文要记录的大概内容:


提示:以下是本篇文章正文内容,下面案例可供参考

一、日志logging的简单介绍

封装思路 1、首先添加一个日志器
2、然后添加一个处理器
3、添加一个格式器
4、将处理器添加到日志器当中
5、将格式器添加到处理器当中
这里需要注意几点,这几点后续我会结合代码进行更为具体的介绍
一、日志器中、处理器中都可以设置日志输出的级别,以级别高的为准,日志五个级别分别为 DEBUG < iINFO< WARNING < ERROR 二、处理器的添加,可以让我选择将日志输出在文件中或者控制台。

二、日志的步骤讲解

1.控制台日志输出

代码如下(示例):

import logging
#添加日志器
logger=logging.getLogger()
# 添加格式器 添加日志器名字 日志级别 时间,日志信息
format=logging.Formatter(fmt='[%(name)s]  [%(levelname)s]  [%(asctime)s] ------->>>>[%(message)s ]')
#添加一个控制台处理器
head=logging.StreamHandler()
#设置控制台处理器的等级
head.setLevel(logging.WARNING)
# 将格式器添控制处理器
head.setFormatter(format)
# 将控制台处理器添加到日志器
logger.addHandler(head)

logger.debug('错误级别1')
logger.info('错误级别2')
logger.warning('错误级别3')
logger.error('错误级别4')
logger.critical('错误级别5')

输出结果为
python之logging日志封装_第1张图片
这里我在为大家讲解几点,1、格式器中的输出内容是可以自己选择的,我将源码介绍复制到下面,如果使用的是py也可以Ctrl + 鼠标左击Formatter。
2、因为控制台的级别设置为WARNING,所有WARNING以下的级别并没有输出。

   %(name)s            Name of the logger (logging channel)
    %(levelno)s         Numeric logging level for the message (DEBUG, INFO,
                        WARNING, ERROR, CRITICAL)
    %(levelname)s       Text logging level for the message ("DEBUG", "INFO",
                        "WARNING", "ERROR", "CRITICAL")
    %(pathname)s        Full pathname of the source file where the logging
                        call was issued (if available)
    %(filename)s        Filename portion of pathname
    %(module)s          Module (name portion of filename)
    %(lineno)d          Source line number where the logging call was issued
                        (if available)
    %(funcName)s        Function name
    %(created)f         Time when the LogRecord was created (time.time()
                        return value)
    %(asctime)s         Textual time when the LogRecord was created
    %(msecs)d           Millisecond portion of the creation time
    %(relativeCreated)d Time in milliseconds when the LogRecord was created,
                        relative to the time the logging module was loaded
                        (typically at application startup time)
    %(thread)d          Thread ID (if available)
    %(threadName)s      Thread name (if available)
    %(process)d         Process ID (if available)
    %(message)s         The result of record.getMessage(), computed just as
                        the record is emitted

2.文件日志输出

接下来,我们再添加一个输出在文件的中的控制器,代码如下
代码如下(示例):

import logging
#添加日志器

logger=logging.getLogger()
#设置日志器等级
logger.setLevel(logging.DEBUG)

# 添加格式器 添加日志器名字 日志级别 时间,日志信息
format=logging.Formatter(fmt='[%(name)s]  [%(levelname)s]  [%(asctime)s] ------->>>>[%(message)s ]')
#添加文件输出的格式器
format2=logging.Formatter(fmt='[%(name)s]  [%(levelname)s]  [%(asctime)s] [%(filename)s]------->>>>[%(message)s ]')

#添加一个控制台处理器
head=logging.StreamHandler()
#设置控制台处理器的等级
head.setLevel(logging.WARNING)
# 将格式器添控制处理器
head.setFormatter(format)
# 将控制台处理器添加到日志器
logger.addHandler(head)

# 添加一个文件处理器  输入需要生成的文件名
file=logging.FileHandler('log.txt',mode='a',encoding='utf-8')
#设置日志输出等级
file.setLevel(logging.INFO)
# 将格式器添加到日志器
file.setFormatter(format2)
# 将处理器添加到日志器
logger.addHandler(file)

logger.debug('错误级别1')
logger.info('错误级别2')
logger.warning('错误级别3')
logger.error('错误级别4')
logger.critical('错误级别5')

结果如图
python之logging日志封装_第2张图片
这里我对日志器进行了等级设置。如果不设置日志器默认等级为warning,如果级别低于这个等级,在控制台和文件中都不会进行日志的输出。


3、日志的封装

这里我们简单的对日志进行一个封装,以后我们想使用的时候就直接进行调用。

import logging

class Log():
    def __init__(self):
        '''添加一个日志器'''
        self.logger=logging.getLogger()
        self.logger.setLevel(logging.DEBUG)

    def fomt(self):
        '''设置格式器'''
        self.for1=logging.Formatter(fmt='[%(name)s]  [%(levelname)s]  [%(asctime)s] ------->>>>[%(message)s ]')
        self.for2=logging.Formatter(fmt='[%(name)s]  [%(levelname)s]  [%(asctime)s] [%(filename)s]------->>>>[%(message)s ]')
        return self.for1,self.for2

    def hand(self):
        '''添加一个处理器'''
        self.h=logging.StreamHandler()
        self.h.setLevel(logging.WARNING)
        self.h.setFormatter(self.fomt()[0])#将格式器添加到处理器
        self.logger.addHandler(self.h) #将处理器添加到格式器

    def add_file(self,file):
        '''设置文件输出控制台'''
        self.f=logging.FileHandler(filename=file,mode='a',encoding='UTF-8')
        self.f.setLevel(logging.DEBUG)
        self.f.setFormatter(self.fomt()[1])
        self.logger.addHandler(self.f)#将文件输出控制台添加到日志器


    def info(self,file):
        self.hand()
        self.add_file(file)
        return self.logger

logger=Log()
a=logger.info('日志')

a.debug('日志级别1')
a.info('日志级别2')
a.warning('日志级别3')
a.error('日志级别4')
a.critical('日志级别5')

总结

提示:这里对文章进行总结:

这就是简单的日志封装了,这就是平常学习内容的记录,欢迎大家留言

你可能感兴趣的:(python,自动化测试,python,自动化)