前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二次封装logging模块,做好日志记录

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

作者头像
苦叶子
发布2021-07-27 15:04:27
5680
发布2021-07-27 15:04:27
举报
文章被收录于专栏:开源优测开源优测

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

  1. 支持将日志写入指定的文件
  2. 支持将日志输出至控制台
  3. 支持日志分级控制
  4. 支持日志格式设置

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

代码语言:javascript
复制
#-*- coding:utf8 -*-

import logging
from logging import CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET
import 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 ...")

运行结果如图所示

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档