使用 RichProgressLogger 高效管理任务进度

发布于:2024-12-19 ⋅ 阅读:(8) ⋅ 点赞:(0)

在日常开发中,任务进度的可视化对于复杂的工作流尤为重要。这篇博客将介绍如何使用 RichProgressLogger 实现基于命令行的进度日志管理。

效果展示:
在这里插入图片描述

1. RichProgressLogger 的功能简介

RichProgressLogger 是一个基于 Rich 库的进度日志管理工具,提供以下主要功能:

  • 进度条更新:实时更新任务进度。
  • 日志记录:记录信息、警告、错误和成功消息。
  • 子任务管理:支持嵌套子任务。

核心代码在 rich_progress_logger.py 文件中实现。

2. 代码结构分析

2.1 抽象基类 ProgressLogger

ProgressLogger 定义了日志管理器的接口,确保所有子类都实现以下方法:

  • __call__:更新任务进度。
  • dispose:释放资源。
  • child:创建子任务。
  • error / warning / info / success:日志记录方法。
from abc import ABC, abstractmethod

class ProgressLogger(ABC):
    @abstractmethod
    def __call__(self, completed: int, total: int, description: str = "") -> None:
        pass

    @abstractmethod
    def dispose(self) -> None:
        pass

    @abstractmethod
    def child(self, prefix: str, transient: bool = True) -> "ProgressLogger":
        pass

    @abstractmethod
    def error(self, message: str) -> None:
        pass

    @abstractmethod
    def warning(self, message: str) -> None:
        pass

    @abstractmethod
    def info(self, message: str) -> None:
        pass

    @abstractmethod
    def success(self, message: str) -> None:
        pass

2.2 RichProgressLogger 实现

RichProgressLogger 继承自 ProgressLogger,通过 Rich 库实现了上述功能。

  • 进度条更新:通过 Progress 对象动态更新任务状态。
  • 子任务管理:支持嵌套显示子任务。
  • 日志记录:使用 Rich 的格式化输出功能高亮显示日志。
class RichProgressLogger(ProgressLogger):
    def __init__(self, prefix: str, parent: "RichProgressLogger" = None, transient: bool = True) -> None:
        # 初始化逻辑省略

    def __call__(self, completed: int, total: int, description: str = "") -> None:
        # 进度条更新逻辑

    def dispose(self) -> None:
        # 释放资源逻辑

    def child(self, prefix: str

网站公告

今日签到

点亮在社区的每一天
去签到