Python日志:禁用后的反效应
根据日志记录文档,调用logging.disable(lvl)
这个方法可以“暂时降低整个应用程序的日志输出”,但我找不到“暂时”这个意思。举个例子,看看下面这个脚本:
import logging
logging.disable(logging.CRITICAL)
logging.warning("test")
# Something here
logging.warning("test")
到目前为止,我还没有找到可以让Something here
重新启用整个日志系统的方法,这样第二个warning
就能被记录下来。有没有什么方法可以反向操作disable()
?
2 个回答
2
根据@unutbu的回答,我创建了一个上下文管理器:
import logging
log = logging.getLogger(__name__)
class SuppressLogging:
"""
Context handler class that suppresses logging for some controlled code.
"""
def __init__(self, loglevel):
logging.disable(loglevel)
return
def __enter__(self):
return
def __exit__(self, exctype, excval, exctraceback):
logging.disable(logging.NOTSET)
return False
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
log.info("log this")
with SuppressLogging(logging.WARNING):
log.info("don't log this")
log.warning("don't log this warning")
log.error("log this error while up to WARNING suppressed")
log.info("log this again")
18
logging.disable(logging.NOTSET)
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。