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
|
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):
|
def set_warning_filter(log_level):
|
||||||
if log_level == logging.ERROR:
|
if log_level == logging.ERROR:
|
||||||
warnings.simplefilter("ignore")
|
warnings.simplefilter("ignore")
|
||||||
@ -71,18 +97,11 @@ def setup_logging(shell, cloud_config):
|
|||||||
:return: None
|
: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)
|
log_file = cloud_config.config.get('log_file', None)
|
||||||
if log_file:
|
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
|
# setup the logging context
|
||||||
log_cont = _LogContext(
|
log_cont = _LogContext(
|
||||||
clouds_name=cloud_config.config.get('cloud'),
|
clouds_name=cloud_config.config.get('cloud'),
|
||||||
|
@ -73,6 +73,30 @@ class TestContext(utils.TestCase):
|
|||||||
opts.verbose_level = 3
|
opts.verbose_level = 3
|
||||||
self.assertEqual(logging.DEBUG, context.log_level_from_options(opts))
|
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')
|
@mock.patch('warnings.simplefilter')
|
||||||
def test_set_warning_filter(self, simplefilter):
|
def test_set_warning_filter(self, simplefilter):
|
||||||
context.set_warning_filter(logging.ERROR)
|
context.set_warning_filter(logging.ERROR)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user