diff --git a/openstack/common/log.py b/openstack/common/log.py index 57934347..d710a398 100644 --- a/openstack/common/log.py +++ b/openstack/common/log.py @@ -40,6 +40,8 @@ from oslo.config import cfg import six from six import moves +_PY26 = sys.version_info[0:2] == (2, 6) + from openstack.common.gettextutils import _ from openstack.common import importutils from openstack.common import jsonutils @@ -227,6 +229,15 @@ class BaseLoggerAdapter(logging.LoggerAdapter): def audit(self, msg, *args, **kwargs): self.log(logging.AUDIT, msg, *args, **kwargs) + def isEnabledFor(self, level): + if _PY26: + # This method was added in python 2.7 (and it does the exact + # same logic, so we need to do the exact same logic so that + # python 2.6 has this capability as well). + return self.logger.isEnabledFor(level) + else: + return super(BaseLoggerAdapter, self).isEnabledFor(level) + class LazyAdapter(BaseLoggerAdapter): def __init__(self, name='unknown', version='unknown'): diff --git a/tests/unit/test_log.py b/tests/unit/test_log.py index a50578f5..08f22683 100644 --- a/tests/unit/test_log.py +++ b/tests/unit/test_log.py @@ -258,11 +258,17 @@ class LogLevelTestCase(test_base.BaseTestCase): self.CONF = self.useFixture(config.Config()).conf levels = self.CONF.default_log_levels levels.append("nova-test=AUDIT") + levels.append("nova-not-debug=WARN") self.config = self.useFixture(config.Config()).config self.config(default_log_levels=levels, verbose=True) log.setup('testing') self.log = log.getLogger('nova-test') + self.log_no_debug = log.getLogger('nova-not-debug') + + def test_is_enabled_for(self): + self.assertTrue(self.log.isEnabledFor(logging.AUDIT)) + self.assertFalse(self.log_no_debug.isEnabledFor(logging.DEBUG)) def test_has_level_from_flags(self): self.assertEqual(logging.AUDIT, self.log.logger.getEffectiveLevel())