如何在Python中记录模块中撤消logging.disable()命令?

gb.*_*gb. 2 python logging

在Python中强大的日志记录内置模块中,可以通过调用来禁用级别以下的所有日志logging.disable(logging.INFO).

我没有找到如何在文档中重置或撤消此设置.

我的目的是在进行单元测试时禁用和重新启用信息和调试级别日志,方法是调用logging.disable setUp(),然后调用(what?)in tearDown().

注意:如果我有一个给定的logger实例logger.level,我知道该怎么做:保持,设置更高的级别,然后重新设置它tearDown().我更喜欢一种方法来静音所有记录器而不明确选择它们.

Mik*_*ran 8

看起来答案是调用logging.disable(logging.NOTSET)

import logging

logger = logging.getLogger('testlog')
handler = logging.FileHandler('\\path\\to\\testlog.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)

logger.error("some error occurred")
logger.info('some info msg')
logging.disable(logging.ERROR)
logger.info('another info msg')
logging.disable(logging.NOTSET)
logger.info('last info msg')
Run Code Online (Sandbox Code Playgroud)

导致具有此输出的日志文件:

2012-05-17 11:09:24,441 ERROR some error occurred
2012-05-17 11:09:24,443 INFO some info msg
2012-05-17 11:09:24,443 INFO last info msg
Run Code Online (Sandbox Code Playgroud)

  • 有关信息,我向 bugs.python.org 提交了一个文档错误,并在不到一小时的时间内修复了该错误,因此下次有人遇到此问题时,我们可能可以重定向到官方文档。 (2认同)