默认情况下Python Logging记录exc_info

3
我正在寻找一种方法,使logging.infologging.warninglogging.error等默认设置exc_info=True。目前重新设计项目以包括此参数并不可行,因此我正在寻找一种在整个项目范围内为logging模块设置此参数的方法。
我特别想要一种设置此参数的方法。通过sys.exc_infotraceback.format_exc()等获取异常的解决办法并不是我想要的。
此外,请告诉我是否不可能实现这一点。

可能是可以的,但听起来一点也不实用。除非你是在 except 块中记录日志,否则 exc info 将是 NoneTypeNone。你为什么想要那个默认情况下是 true / on 的东西呢? - wim
由于我无法控制的项目要求...这是否可以通过配置实现,还是必须重载函数本身?我一直在阅读日志记录文档,但没有找到相关的配置。 - SkippyNBS
有一个要求超出您的控制,要求日志文件到处都是无用的NoneType:None吗? - wim
是的,logging.Config中是否有可以实现这种行为的内容,还是我应该在其他地方寻找? - SkippyNBS
@wim 看起来你想要帮忙并且理解,因此你要求一个使用案例的例子 => 就我个人而言,我使用 Sentry 来记录错误,但是当使用 Python 的 logging 显式地抛出错误时,默认情况下在 Sentry 中不可用堆栈跟踪;我需要设置 exc_info=True。有道理吗? - nicolas.leblanc
1个回答

2

如果有人遇到类似的问题,我在这里分享一个解决方法 - 参考自这个问题

我发现最简单的方法是在项目开始时使用functools.partial。这样可以更改默认参数值,同时仍然可以将其设置为False,以便在需要的函数调用中使用!

import logging
from functools import *

logging.info = partial(logging.info, exc_info=True)

1
这只会影响根记录器。 - wim
2
在这种情况下,这正是我所期望的行为;谢谢你明确指出,以防其他人有问题! - SkippyNBS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接