Python接口自动化框架之日志模块封装

在接口自动化框架中,日志记录是一个非常重要的部分。它不仅能够帮助我们调试和诊断问题,还能提供重要的运行时信息,以便后续分析和改进。为了更好地管理和使用日志,我们可以进行日志封装。本文将介绍一个基于 Loguru 库的日志封装实现。

在这篇文章中,我们使用了 Loguru 库来实现日志封装。具体的实现如下

1. 初始化日志处理器

from loguru import logger
from datetime import datetime
import sys  
from common.path_util import join_path_with_project_root
from common.config_loader import get_config

class LoguruHandler:
    def __init__(self):
        # 加载日志配置
        self.config = get_config().logging
        # 确保日志目录存在,如果不存在则创建
        self.BASE_PATH = join_path_with_project_root(self.config.log_dir)
        self.BASE_PATH.mkdir(parents=True, exist_ok=True)
        # 调用配置日志器的函数
        self.setup_logger()

1. 在初始化时,首先加载日志配置并确保日志目录存在。如果不存在,则创建日志目录。

2. 配置日志器

def setup_logger(self):
    # 获取当前日期,用于日志文件名
    date_str = datetime.now().strftime("%Y-%m-%d")
    # 定义日志格式
    log_format = (
        "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | "
        "<level>{level: <8}</level> | "
        "<cyan>{name}</cyan>:<cyan>{function}</cyan>:"
        "<cyan>{file.path}</cyan>:<cyan>{line}</cyan> | "
        "<magenta>{thread.name}</magenta> - <green><level>{message}</level></green>"
    )

    # 移除所有已存在的日志处理器
    logger.remove()

    # 控制台输出配置,使用标准错误流,确保彩色输出
    logger.add(sys.stderr, format=log_format, colorize=True, level=self.config.log_level)

    # 配置各个级别的日志处理器,记录到不同的文件,并确保对应级别的日志输出到对应级别
    logger.add(
        self.BASE_PATH / f"debug_{date_str}.log",
        rotation=self.config.log_rotation,  # 日志文件轮转周期
        compression="zip",  # 日志文件压缩格式
        level="DEBUG",  # 日志级别
        format=log_format,  # 日志格式
        retention=self.config.log_retention,  # 日志保留周期
        filter=lambda record: record["level"].name == "DEBUG"  # 仅记录DEBUG级别的日志
    )
    # 类似配置其他级别的日志处理器

2. 我们定义了一个详细的日志格式,并移除了所有已存在的日志处理器。然后,我们分别为不同的日志级别(DEBUG、INFO、WARNING、ERROR)配置了不同的日志文件处理器,每个处理器只记录相应级别的日志。

3. 获取日志记录函数

@classmethod
def get_loggers(cls):
    # 使用 lambda 函数创建简单的绑定级别的日志函数
    return (
        lambda message: logger.opt(depth=1).bind(level="DEBUG").debug(message),
        lambda message: logger.opt(depth=1).bind(level="INFO").info(message),
        lambda message: logger.opt(depth=1).bind(level="WARNING").warning(message),
        lambda message: logger.opt(depth=1).bind(level="ERROR").error(message)
    )

3. 我们使用 lambda 函数创建了简洁的日志记录函数,并将这些函数与不同的日志级别绑定,方便在代码中直接调用。

优点和好处

1. 日志配置集中管理

• 通过封装日志配置,可以集中管理日志格式、日志级别、日志输出路径等配置,便于维护和修改。

2. 不同级别日志分文件存储

• 将不同级别的日志分别存储在不同的文件中,方便查找和分析特定级别的日志信息,提高调试效率。

3. 彩色输出

• 控制台日志输出使用彩色显示,增强日志的可读性,方便快速定位重要信息。

4. 自动文件轮转和压缩

• 配置了日志文件的轮转和压缩,可以有效管理日志文件大小,防止日志文件过大导致磁盘空间不足。

5. 灵活的日志记录函数

• 通过 lambda 函数创建简洁的日志记录函数,使得在代码中记录日志变得非常方便,提升了开发效率。

使用

在实际使用中,只需实例化日志处理器并获取各级别的日志记录函数即可:

# 实例化日志处理器
log_handler = LoguruHandler()
# 获取各级别的日志记录函数
DEBUG, INFO, WARNING, ERROR = log_handler.get_loggers()

# 示例日志记录
DEBUG("这是一个调试日志")
INFO("这是一个信息日志")
WARNING("这是一个警告日志")
ERROR("这是一个错误日志")

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值