日志记录处理程序¶

发布时间 2023-09-13 12:49:43作者: linux星

Rich 提供了一个日志记录处理程序,它将格式化和着色由 Python 的日志记录模块编写的文本。

下面是如何设置丰富记录器的示例:

import logging
from rich.logging import RichHandler

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

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

默认情况下,丰富日志不会在日志记录中呈现控制台标记,因为大多数库不会意识到需要转义文本方括号,但可以通过设置处理程序来启用它。或者,您可以通过提供参数来按日志消息启用它,如下所示:markup=Trueextra

log.error("[bold red blink]Server is shutting down![/]", extra={"markup": True})

同样,可能会根据日志消息覆盖突出显示器:

log.error("123 will not be highlighted", extra={"highlighter": None})

处理异常

可以将该类配置为使用 Rich 的类来设置异常格式,这提供了比内置异常更多的上下文。要在处理程序构造函数上设置的日志中获取漂亮的异常,请执行以下操作:rich_tracebacks=True

import logging
from rich.logging import RichHandler

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

log = logging.getLogger("rich")
try:
    print(1 / 0)
except Exception:
    log.exception("unable print!")

还有许多其他选项可用于配置日志记录输出,有关详细信息,请参阅参考。

抑制帧

如果你正在使用一个框架(click,django等),你可能只对在回溯中查看你自己的应用程序的代码感兴趣。您可以通过在回溯安装和Console.print_exception上设置 suppress 参数来排除框架代码,该参数应该是模块或 str 路径的列表。

下面介绍了如何从富媒体资源异常中排除点击次数:

import click
import logging
from rich.logging import RichHandler

logging.basicConfig(
    level="NOTSET",
    format="%(message)s",
    datefmt="[%X]",
    handlers=[RichHandler(rich_tracebacks=True, tracebacks_suppress=[click])]
)

抑制的帧将仅显示行和文件,而不显示任何代码。