美文网首页
python的logging日志模块的使用

python的logging日志模块的使用

作者: lizzy89 | 来源:发表于2022-03-25 11:15 被阅读0次

一、线性代码

import logging
# 第一步:创建日志器
logger = logging.getLogger("日志服务器")
# 第二步:定义处理器,控制台和文本输出两种方式
console_handler = logging.StreamHandler() # 控制台处理器
file_handler = logging.FileHandler("./log.txt", mode="a", encoding="utf-8")
# 第三步:设置不同的输出格式
console_fmt = "%(name)s--->%(levelname)s--->%(asctime)s"
file_fmt = "%(lineno)d--->%(asctime)s--->(levelname)"
fmt1 =logging.Formatter(fmt=console_fmt)
fmt2 = logging.Formatter(fmt=file_fmt)
console_hander.setFormatter(fmt1)
file_handler.setFormatter(fmt2)
# 第四步:日志器添加处理器
logger.addHandler(console_handler)
logger.addFilter(file_handler)

二、封装成日志库

class Log:
    def __init__(self, level="DEBUG"):

        # 日志器对像
        self.log = logging.getLogger("接口自动化测试")
        self.log.setLevel(level)
        # 读取log配置信息
        self.yml = YamlUtil()
        self.cfg = YamlUtil().read_config_yaml('log')


    def console_handle(self):
        """控制台处理哭器"""
        console_handler = logging.StreamHandler()
        console_handler.setLevel(self.cfg['console_log_level'])
        # 处理器添加格式器
        console_handler.setFormatter(self.get_formatter()[0])
        return console_handler

    def file_handle(self, level="DEBUG"):
        """文件处理哭器"""
        log_path = self.yml.get_project_path() + '/logs/' + self.cfg['log_name'] + \
                   datetime.datetime.now().strftime('%Y-%m-%d')+'.txt'
        file_handler = logging.FileHandler(log_path, mode="a", encoding="utf-8")
        file_handler.setLevel(self.cfg['file_log_level'])
        # 文件处理器添加格式器
        file_handler.setFormatter(self.get_formatter()[1])
        return file_handler

    def get_formatter(self):
        """格式器"""

        # 定义输出格式
        console_fmt = logging.Formatter(fmt=self.cfg['console_log_format'])
        file_fmt = logging.Formatter(fmt=self.cfg['file_log_format'])
        return console_fmt, file_fmt

    def get_log(self):
        # 日志器添加控制台处理器
        self.log.addHandler(self.console_handle())
        # 日志器添加文件处理器
        self.log.addHandler(self.file_handle())
        # 返回日志实例对像
        return self.log

    def remove_handler(self, handler):
        self.log.removeHandler(handler)

相关文章

网友评论

      本文标题:python的logging日志模块的使用

      本文链接:https://www.haomeiwen.com/subject/airljrtx.html