除测试外,禁用日志记录

时间:2017-10-20 07:30:13

标签: python django python-2.7 logging

在我的应用程序中,我使用以下记录器:

logger = logging.getLogger()

但是,我想在运行测试时禁用它并禁用日志记录,所以在我包含的tests.py文件的顶部:

logging.disable(logging.CRITICAL)

但我希望能够记录特定于测试的消息。我尝试使用新的记录器并设置不同的级别:

logger = logging.getLogger('TestLogger')
logger.setLevel(logging.DEBUG)

disable电话似乎也会影响它。

如何禁用除我在测试文件中使用的logger以外的所有其他记录器?

1 个答案:

答案 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