Merge "Extract log level from configuration file"

This commit is contained in:
Jenkins 2015-09-09 20:06:24 +00:00 committed by Gerrit Code Review
commit 535aac6c91
2 changed files with 53 additions and 10 deletions
openstackclient
common
tests/common

@ -38,6 +38,32 @@ def log_level_from_options(options):
return log_level
def log_level_from_config(config):
# Check the command line option
verbose_level = config.get('verbose_level')
if config.get('debug', False):
verbose_level = 3
if verbose_level == 0:
verbose_level = 'error'
elif verbose_level == 1:
# If a command line option has not been specified, check the
# configuration file
verbose_level = config.get('log_level', 'warning')
elif verbose_level == 2:
verbose_level = 'info'
else:
verbose_level = 'debug'
log_level = {
'critical': logging.CRITICAL,
'error': logging.ERROR,
'warning': logging.WARNING,
'info': logging.INFO,
'debug': logging.DEBUG,
}.get(verbose_level, logging.WARNING)
return log_level
def set_warning_filter(log_level):
if log_level == logging.ERROR:
warnings.simplefilter("ignore")
@ -71,18 +97,11 @@ def setup_logging(shell, cloud_config):
:return: None
"""
log_level = logging.WARNING
log_level = log_level_from_config(cloud_config.config)
set_warning_filter(log_level)
log_file = cloud_config.config.get('log_file', None)
if log_file:
# setup the logging level
get_log_level = cloud_config.config.get('log_level')
if get_log_level:
log_level = {
'error': logging.ERROR,
'info': logging.INFO,
'debug': logging.DEBUG,
}.get(get_log_level, logging.WARNING)
# setup the logging context
log_cont = _LogContext(
clouds_name=cloud_config.config.get('cloud'),

@ -73,6 +73,30 @@ class TestContext(utils.TestCase):
opts.verbose_level = 3
self.assertEqual(logging.DEBUG, context.log_level_from_options(opts))
def test_log_level_from_config(self):
cfg = {'verbose_level': 0}
self.assertEqual(logging.ERROR, context.log_level_from_config(cfg))
cfg = {'verbose_level': 1}
self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
cfg = {'verbose_level': 2}
self.assertEqual(logging.INFO, context.log_level_from_config(cfg))
cfg = {'verbose_level': 3}
self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
cfg = {'verbose_level': 1, 'log_level': 'critical'}
self.assertEqual(logging.CRITICAL, context.log_level_from_config(cfg))
cfg = {'verbose_level': 1, 'log_level': 'error'}
self.assertEqual(logging.ERROR, context.log_level_from_config(cfg))
cfg = {'verbose_level': 1, 'log_level': 'warning'}
self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
cfg = {'verbose_level': 1, 'log_level': 'info'}
self.assertEqual(logging.INFO, context.log_level_from_config(cfg))
cfg = {'verbose_level': 1, 'log_level': 'debug'}
self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
cfg = {'verbose_level': 1, 'log_level': 'bogus'}
self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
cfg = {'verbose_level': 1, 'log_level': 'info', 'debug': True}
self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
@mock.patch('warnings.simplefilter')
def test_set_warning_filter(self, simplefilter):
context.set_warning_filter(logging.ERROR)