分享

二次封装logging模块,做好日志记录

 开源优测 2021-12-09

下方查看历史精选文章

重磅发布 - 自动化框架基础指南pdf
大数据测试过程、策略及挑战

测试框架原理,构建成功的基石

在自动化测试工作之前,你应该知道的10条建议

在自动化测试中,重要的不是工具

在软件开发过程中,必须掌握日志记录的能力,不仅要能控制日志重定向,还要能控制日志的level,本文基于Python3 logging模块,进行简要封装,实现一个简单的日志记录器,非常适用于自动化测试中使用,支持以下功能特色:

  1. 支持将日志写入指定的文件

  2. 支持将日志输出至控制台

  3. 支持日志分级控制

  4. 支持日志格式设置

直接上代码,源码如下所示: 

#-*- coding:utf8 -*-
import loggingfrom logging import CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSETimport os
class AutoLogger:
def __init__(self, path, level=WARNING, name="Auto logger"): # 初始化日志记录器, 默认为警告级别 self.logger = logging.getLogger(name) self.logger.setLevel(level)
# 初始化文件日志处理器 self.fh = logging.FileHandler(path) self.fh.setLevel(level)
# 初始化控制台日志处理器 self.ch = logging.StreamHandler() self.ch.setLevel(level)
# 初始化日志输出格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') self.fh.setFormatter(formatter) self.ch.setFormatter(formatter)
# 绑定处理器至日志记录器 self.logger.addHandler(self.fh) self.logger.addHandler(self.ch)
# 设置日志级别 def setLevel(self, level): self.fh.setLevel(level) self.ch.setLevel(level)
def setfileLevel(self, level): self.fh.setLevel(level)
def setConsoleLevel(self, level): self.ch.setLevel(level)
# 写日志 def write_msg(self, typ, msg=None): if typ in (CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET): self.logger.log(typ, msg) else: print("日志写入失败")      if __name__ == "__main__": logger = AutoLogger(path=os.getcwd() + "/log.txt") logger.write_msg(DEBUG, "debug ...") logger.write_msg(WARNING, "waring ...")    logger.write_msg(ERROR, "error ...")

运行结果如图所示

新手可以尝试下使用,加强对封装的理解和应用。

微信搜一搜 或 长按加群
开源优测

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多