summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-05-28 08:57:45 +0000
committerGerrit Code Review <review@openstack.org>2015-05-28 08:57:45 +0000
commit6754d13be218d8defe0966aa001b4ba148f303d4 (patch)
treece8076e0626c618252ae4aeebd417afeef2ff7ab
parent1d64c9184214f3a7f2888d85acee93247278a0ec (diff)
parent8578bdd6d96ab9f732ea8c2144b8504cd406e550 (diff)
downloadoslo-log-6754d13be218d8defe0966aa001b4ba148f303d4.tar.gz
Merge "Allow integer logging levels"1.4.0
-rw-r--r--oslo_log/log.py19
-rw-r--r--oslo_log/tests/unit/test_log.py4
2 files changed, 20 insertions, 3 deletions
diff --git a/oslo_log/log.py b/oslo_log/log.py
index fc7f6ea..2785f51 100644
--- a/oslo_log/log.py
+++ b/oslo_log/log.py
@@ -352,13 +352,26 @@ def _setup_logging_from_conf(conf, project, version):
for pair in conf.default_log_levels:
mod, _sep, level_name = pair.partition('=')
logger = logging.getLogger(mod)
+ numeric_level = None
+ try:
+ # NOTE(harlowja): integer's are valid level names, and for some
+ # libraries they have a lower level than DEBUG that is typically
+ # defined at level 5, so to make that accessible, try to convert
+ # this to a integer, and if not keep the original...
+ numeric_level = int(level_name)
+ except ValueError:
+ pass
# NOTE(AAzza) in python2.6 Logger.setLevel doesn't convert string name
# to integer code.
if sys.version_info < (2, 7):
- level = logging.getLevelName(level_name)
- logger.setLevel(level)
+ if numeric_level is None:
+ numeric_level = logging.getLevelName(level_name)
+ logger.setLevel(numeric_level)
else:
- logger.setLevel(level_name)
+ if numeric_level is not None:
+ logger.setLevel(numeric_level)
+ else:
+ logger.setLevel(level_name)
_loggers = {}
diff --git a/oslo_log/tests/unit/test_log.py b/oslo_log/tests/unit/test_log.py
index 578caed..8e10c0f 100644
--- a/oslo_log/tests/unit/test_log.py
+++ b/oslo_log/tests/unit/test_log.py
@@ -242,15 +242,19 @@ class LogLevelTestCase(BaseTestCase):
levels = self.CONF.default_log_levels
levels.append("nova-test=INFO")
levels.append("nova-not-debug=WARN")
+ levels.append("nova-below-debug=5")
self.config(default_log_levels=levels,
verbose=True)
log.setup(self.CONF, 'testing')
self.log = log.getLogger('nova-test')
self.log_no_debug = log.getLogger('nova-not-debug')
+ self.log_below_debug = log.getLogger('nova-below-debug')
def test_is_enabled_for(self):
self.assertTrue(self.log.isEnabledFor(logging.INFO))
self.assertFalse(self.log_no_debug.isEnabledFor(logging.DEBUG))
+ self.assertTrue(self.log_below_debug.isEnabledFor(logging.DEBUG))
+ self.assertTrue(self.log_below_debug.isEnabledFor(5))
def test_has_level_from_flags(self):
self.assertEqual(logging.INFO, self.log.logger.getEffectiveLevel())