二次封装logging模块,做好日志记录
  ehrZuhofWJiC 12天前 17 0

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

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

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

#-*- 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 ...")

运行结果如图所示

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

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 12天前 0

暂无评论

推荐阅读
  Fo7woytj0C0D   2023年12月23日   18   0   0 pythonsedidepythonidesed
ehrZuhofWJiC