Extract log level from configuration file
Extract log_level from configuration file if the level was not overridden by the command line option. The default command line option is 1 and there is no command line option to set the verbose_level to 1, so if it is 1, it has not be set. Change-Id: I1be04367c72f83c1181f92ca4c2c83165b66995c Implements: blueprint logging-migration
This commit is contained in:
parent
ca9965c328
commit
d828429d6a
openstackclient
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user