提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:这个章节主要介绍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')
输出结果为
这里我在为大家讲解几点,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')
结果如图
这里我对日志器进行了等级设置。
如果不设置日志器默认等级为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')
总结
提示:这里对文章进行总结:
这就是简单的日志封装了,这就是平常学习内容的记录,欢迎大家留言
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)