Skip to content

Commit d828429

Browse files
committed
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
1 parent ca9965c commit d828429

2 files changed

Lines changed: 53 additions & 10 deletions

File tree

openstackclient/common/context.py

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,32 @@ def log_level_from_options(options):
3838
return log_level
3939

4040

41+
def log_level_from_config(config):
42+
# Check the command line option
43+
verbose_level = config.get('verbose_level')
44+
if config.get('debug', False):
45+
verbose_level = 3
46+
if verbose_level == 0:
47+
verbose_level = 'error'
48+
elif verbose_level == 1:
49+
# If a command line option has not been specified, check the
50+
# configuration file
51+
verbose_level = config.get('log_level', 'warning')
52+
elif verbose_level == 2:
53+
verbose_level = 'info'
54+
else:
55+
verbose_level = 'debug'
56+
57+
log_level = {
58+
'critical': logging.CRITICAL,
59+
'error': logging.ERROR,
60+
'warning': logging.WARNING,
61+
'info': logging.INFO,
62+
'debug': logging.DEBUG,
63+
}.get(verbose_level, logging.WARNING)
64+
return log_level
65+
66+
4167
def set_warning_filter(log_level):
4268
if log_level == logging.ERROR:
4369
warnings.simplefilter("ignore")
@@ -71,18 +97,11 @@ def setup_logging(shell, cloud_config):
7197
:return: None
7298
"""
7399

74-
log_level = logging.WARNING
100+
log_level = log_level_from_config(cloud_config.config)
101+
set_warning_filter(log_level)
102+
75103
log_file = cloud_config.config.get('log_file', None)
76104
if log_file:
77-
# setup the logging level
78-
get_log_level = cloud_config.config.get('log_level')
79-
if get_log_level:
80-
log_level = {
81-
'error': logging.ERROR,
82-
'info': logging.INFO,
83-
'debug': logging.DEBUG,
84-
}.get(get_log_level, logging.WARNING)
85-
86105
# setup the logging context
87106
log_cont = _LogContext(
88107
clouds_name=cloud_config.config.get('cloud'),

openstackclient/tests/common/test_context.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,30 @@ def test_log_level_from_options(self):
7373
opts.verbose_level = 3
7474
self.assertEqual(logging.DEBUG, context.log_level_from_options(opts))
7575

76+
def test_log_level_from_config(self):
77+
cfg = {'verbose_level': 0}
78+
self.assertEqual(logging.ERROR, context.log_level_from_config(cfg))
79+
cfg = {'verbose_level': 1}
80+
self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
81+
cfg = {'verbose_level': 2}
82+
self.assertEqual(logging.INFO, context.log_level_from_config(cfg))
83+
cfg = {'verbose_level': 3}
84+
self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
85+
cfg = {'verbose_level': 1, 'log_level': 'critical'}
86+
self.assertEqual(logging.CRITICAL, context.log_level_from_config(cfg))
87+
cfg = {'verbose_level': 1, 'log_level': 'error'}
88+
self.assertEqual(logging.ERROR, context.log_level_from_config(cfg))
89+
cfg = {'verbose_level': 1, 'log_level': 'warning'}
90+
self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
91+
cfg = {'verbose_level': 1, 'log_level': 'info'}
92+
self.assertEqual(logging.INFO, context.log_level_from_config(cfg))
93+
cfg = {'verbose_level': 1, 'log_level': 'debug'}
94+
self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
95+
cfg = {'verbose_level': 1, 'log_level': 'bogus'}
96+
self.assertEqual(logging.WARNING, context.log_level_from_config(cfg))
97+
cfg = {'verbose_level': 1, 'log_level': 'info', 'debug': True}
98+
self.assertEqual(logging.DEBUG, context.log_level_from_config(cfg))
99+
76100
@mock.patch('warnings.simplefilter')
77101
def test_set_warning_filter(self, simplefilter):
78102
context.set_warning_filter(logging.ERROR)

0 commit comments

Comments
 (0)