使用 logger.exception 打印出抑制/重定向堆栈跟踪?

问题描述 投票:0回答:0

处理异常的一个好方法是使用

Logger.exception

try:
    do_something()
except BaseException:
    logger.exception('some message')

...这不仅打印出用户消息,还打印出异常消息和异常类型,以及完整的堆栈跟踪。

我的记录器有两个处理程序:一个

FileHandler
和一个
StreamHandler
.

使用colorlog根据不同级别为我的记录器输出着色,我可以看到在上述情况下,“一些消息”是根据记录器打印的(我相信级别

logging.ERROR
,即红色)......但是stacktrace 本身以普通控制台颜色打印。可能是
stdout
,但更有可能是
stderr
.

碰巧的是,在这种情况下,我希望将此堆栈跟踪完整地打印到我的记录器的文件处理程序,而不是打印到处理控制台输出的流处理程序:堆栈跟踪非常适合调试目的,但默认情况下用户不应该暴露在他们面前。

我查看了 StreamHandler 上的日志记录文档,但看不到一种方法来抑制给定此类处理程序的堆栈跟踪打印输出。

python exception logging stack-trace stderr
© www.soinside.com 2019 - 2024. All rights reserved.