Вариант 1:
Ведение журнала может быть отключено путем вызова
logging.disable(logging.CRITICAL)
и снова включается с
logging.disable(logging.NOTSET)
Тем не менее, даже после отключения ведения журнала такой оператор ведения журнала, как logger.info
, все равно заставит Python выполнить несколько поисков атрибутов и вызовов функций до достижения метода isEnabledFor
. Тем не менее, это может быть достаточно хорошо.
Вариант 2:
Использовать насмешки:
class MockLogger(object):
def debug(msg, *args, **kwargs): pass
def info(msg, *args, **kwargs): pass
def warn(msg, *args, **kwargs): pass
def error(msg, *args, **kwargs): pass
def critical(msg, *args, **kwargs): pass
class Test(unittest.TestCase):
def test_func(self):
_logger1=testmodule.logger1
_logger2=testmodule.logger2
testmodule.logger1=MockLogger()
testmodule.logger2=MockLogger()
# perform test
testmodule.logger1=_logger1
testmodule.logger2=_logger2
Это сократит время, затрачиваемое на регистрацию операторов, до времени, которое требуется для выполнения поиска одного атрибута и одного (noop) вызова функции. Если это неудовлетворительно, я думаю, что единственный оставшийся вариант - это удалить сами операторы регистрации.