From 6e3ca645e71dd021fead5a70dc06d9b663612e3a Mon Sep 17 00:00:00 2001 From: Timo Furrer Date: Fri, 1 Jun 2018 09:29:46 +0200 Subject: [PATCH] bpo-33606: improve logging performance when logger is disabled (GH-7285) A check has been added in Logger.isEnabledFor() to return False when the logger is disabled. This avoids unnecessary work being done when a disabled logger is used. --- Lib/logging/__init__.py | 3 +++ Lib/test/test_logging.py | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 46c590687c..a3617b16c4 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1569,6 +1569,9 @@ class Logger(Filterer): """ Is this logger enabled for level 'level'? """ + if self.disabled: + return False + try: return self._cache[level] except KeyError: diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index eee2ed0c19..e02bb31c33 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -4097,6 +4097,18 @@ class LoggerTest(BaseTest): self.addCleanup(setattr, self.logger.manager, 'disable', old_disable) self.assertFalse(self.logger.isEnabledFor(22)) + def test_is_enabled_for_disabled_logger(self): + old_disabled = self.logger.disabled + old_disable = self.logger.manager.disable + + self.logger.disabled = True + self.logger.manager.disable = 21 + + self.addCleanup(setattr, self.logger, 'disabled', old_disabled) + self.addCleanup(setattr, self.logger.manager, 'disable', old_disable) + + self.assertFalse(self.logger.isEnabledFor(22)) + def test_root_logger_aliases(self): root = logging.getLogger() self.assertIs(root, logging.root) -- 2.40.0