日志记录处理程序

丰富的供应品 logging handler 它将对由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=True 在操控者身上。或者,您也可以按日志消息启用它,方法是提供 extra 参数如下:

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

同样,可能会覆盖每个日志消息的高亮笔::

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

处理异常

这个 RichHandler 类可以配置为使用Rich的 Traceback 类来格式化异常,这提供了比内置异常更多的上下文。在您的日志集中获取漂亮的异常 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!")

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

隐藏帧

如果您正在使用框架(Click、Django等),您可能只对在回溯中查看您自己的应用程序中的代码感兴趣。属性可以排除框架代码 suppress 辩论开始 Tracebackinstall ,以及 Console.print_exception ,它应该是模块或字符串路径的列表。

以下是您将如何排除 click 来自丰富异常:

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])]
)

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