禁用除测试外的日志记录

2024-04-25 22:44:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

logger = logging.getLogger()

但是,我想在运行测试时禁用它,并在一般情况下禁用日志记录,因此我包含了tests.py文件的ontop:

logging.disable(logging.CRITICAL)

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

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

但是disable调用似乎也会影响它。你知道吗

如何禁用测试文件中使用的logger之外的所有其他记录器?你知道吗


Tags: 文件py应用程序消息logging记录情况tests
1条回答
网友
1楼 · 发布于 2024-04-25 22:44:27

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中。你知道吗

相关问题 更多 >