Skip to content

Commit

Permalink
Merge "Allow integer logging levels"
Browse files Browse the repository at this point in the history
  • Loading branch information
Jenkins authored and openstack-gerrit committed May 28, 2015
2 parents 1d64c91 + 8578bdd commit 6754d13
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
19 changes: 16 additions & 3 deletions oslo_log/log.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {}

Expand Down
4 changes: 4 additions & 0 deletions oslo_log/tests/unit/test_log.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,15 +242,19 @@ def setUp(self):
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())
Expand Down

0 comments on commit 6754d13

Please sign in to comment.