]> granicus.if.org Git - python/commitdiff
bpo-33606: improve logging performance when logger is disabled (GH-7285)
authorTimo Furrer <tuxtimo@gmail.com>
Fri, 1 Jun 2018 07:29:46 +0000 (09:29 +0200)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>
Fri, 1 Jun 2018 07:29:46 +0000 (08:29 +0100)
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
Lib/test/test_logging.py

index 46c590687c7dc14a80466a373248917fb05fd1ce..a3617b16c4d1c9b0607a61bfa6a85c96ad318852 100644 (file)
@@ -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:
index eee2ed0c19ec11dd3fb93aaf854735132c2fb3d4..e02bb31c33928ce762079c59b98288eda7b00478 100644 (file)
@@ -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)