在我的应用程序中,我使用以下记录器:
logger = logging.getLogger()
但是,我想在运行测试时禁用它并禁用日志记录,所以在我包含的tests.py
文件的顶部:
logging.disable(logging.CRITICAL)
但我希望能够记录特定于测试的消息。我尝试使用新的记录器并设置不同的级别:
logger = logging.getLogger('TestLogger')
logger.setLevel(logging.DEBUG)
但disable
电话似乎也会影响它。
如何禁用除我在测试文件中使用的logger
以外的所有其他记录器?
答案 0 :(得分:0)
logging.disable()
会影响每个记录器(请参阅https://docs.python.org/3/library/logging.html#logging.disable)。
您可以尝试这样的事情:
import logging
logger1 = logging.getLogger('logger1')
logger2 = logging.getLogger('logger2')
keep_this_logger = logging.getLogger('keep_this_logger')
logger1.warning("WARNING 1")
logger2.warning("WARNING 2")
keep_this_logger.warning("WARNING 3")
for key in logging.Logger.manager.loggerDict: # gets all loggers
logging.getLogger(key).disabled = True # disable them 1 by 1
logging.getLogger('keep_this_logger').disabled = False # re-enable your logger
logger1.warning("WARNING 1")
logger2.warning("WARNING 2")
keep_this_logger.warning("YAY!!!") # success
编辑:
刚刚注意到你说你的主记录器是logging.getLogger()
。此代码仅适用于命名记录器,根记录器不会显示在logging.Logger.manager.loggerDict
。