4

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

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

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

logger注意:如果我有一个给定的实例,我知道该怎么做: keep logger.level,将级别设置得更高,然后将其重新设置为tearDown()。我更喜欢一种在不明确选择它们的情况下使所有记录器静音的方法。

4

1 回答 1

10

看起来答案是调用 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')

生成带有此输出的日志文件:

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
于 2012-05-17T15:10:51.353 回答