You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置RichHandler自定义日志颜色后,使用rich.progress出现打印溢出问题求助

Rich日志与Progress组件共存时的打印溢出问题解决

自定义了SUCCESS日志级别并通过Theme设置颜色后,单独使用日志功能正常,但结合rich.progress组件时会出现打印溢出/输出混乱的问题,本质是动态进度条与日志输出的终端上下文冲突导致的。以下是两种可行的解决方案:

方法一:共享全局Console实例

创建唯一的Console对象同时传给RichHandler和Progress,让两者共用同一个终端输出上下文,Rich会自动处理进度条与日志的显示顺序,避免互相干扰。

修改后的完整代码:

import logging
from rich.logging import RichHandler
from time import sleep
from rich.theme import Theme
from rich.console import Console
from rich.progress import Progress

# 创建全局Console实例并自定义主题
console = Console(theme=Theme({"logging.level.success": "green"}))

FORMAT = "%(message)s"
logging.basicConfig(
    level="NOTSET", format=FORMAT, datefmt="[%X]", 
    handlers=[RichHandler(console=console)]
)

log = logging.getLogger("rich")
log.info("Hello, World!")

# 注册自定义SUCCESS级别
logging.addLevelName(25, "SUCCESS")

# 传入同一个console初始化Progress
with Progress(console=console) as progress:
    task = progress.add_task("Working", total=None)
    for i in range(0,100):
        if i < 30:
            logging.log(25, i+1)
        elif i >= 30 and i < 50:
            log.error(i+1)
        elif i >= 50 and i < 70:
            log.debug(i+1)
        elif i >= 70:
            log.critical(i+1)
        else:
            log.warning(i+1)
        sleep(0.05)

注:原代码的elif顺序存在逻辑错误(i > 30会优先匹配所有大于30的情况,导致后续条件无法触发),已在上述代码中修正。

方法二:使用Progress内置日志功能

直接利用Progress的log方法输出日志,日志会自动显示在进度条下方,无需额外配置logging体系,适合仅在进度任务内输出状态的场景:

示例代码片段:

with Progress(console=console) as progress:
    task = progress.add_task("Working", total=None)
    for i in range(0,100):
        if i < 30:
            progress.log(f"[green]SUCCESS[/] {i+1}")
        elif i >= 30 and i < 50:
            progress.log(f"[red]ERROR[/] {i+1}")
        elif i >= 50 and i < 70:
            progress.log(f"[blue]DEBUG[/] {i+1}")
        elif i >= 70:
            progress.log(f"[bold red]CRITICAL[/] {i+1}")
        else:
            progress.log(f"[yellow]WARNING[/] {i+1}")
        sleep(0.05)

内容的提问来源于stack exchange,提问作者Ankush Bhagat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:10:18