From 751c35b1c8ff0730883a8ccdda9b77a49fff2405 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Thu, 13 Dec 2012 22:42:33 -0500 Subject: [PATCH] Verbose should not enable debug level logging Fixes LP #989269 Currently setting --verbose in will still allow DEBUG level message to be logged to python logger object. we need to check for --debug first (set DEBUG level), then --verbose (set INFO level) and if neither is set then set default to WARNING DocImpact Change-Id: Ic9e3cb5979b2d7283552ad3a461870373f45a239 --- openstack/common/cfg.py | 6 ++++-- openstack/common/log.py | 6 ++++-- tests/unit/test_log.py | 8 +++++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/openstack/common/cfg.py b/openstack/common/cfg.py index 8f25c5cb7..a6500eb63 100644 --- a/openstack/common/cfg.py +++ b/openstack/common/cfg.py @@ -1735,11 +1735,13 @@ class CommonConfigOpts(ConfigOpts): BoolOpt('debug', short='d', default=False, - help='Print debugging output'), + help='Print debugging output (set logging level to ' + 'DEBUG instead of default WARNING level).'), BoolOpt('verbose', short='v', default=False, - help='Print more verbose output'), + help='Print more verbose output (set logging level to ' + 'INFO instead of default WARNING level).'), ] logging_cli_opts = [ diff --git a/openstack/common/log.py b/openstack/common/log.py index d88a2c98b..7fc9b83a2 100644 --- a/openstack/common/log.py +++ b/openstack/common/log.py @@ -361,10 +361,12 @@ def _setup_logging_from_conf(product_name): datefmt=datefmt)) handler.setFormatter(LegacyFormatter(datefmt=datefmt)) - if CONF.verbose or CONF.debug: + if CONF.debug: log_root.setLevel(logging.DEBUG) - else: + elif CONF.verbose: log_root.setLevel(logging.INFO) + else: + log_root.setLevel(logging.WARNING) level = logging.NOTSET for pair in CONF.default_log_levels: diff --git a/tests/unit/test_log.py b/tests/unit/test_log.py index cc032d9c1..a4a7915fd 100644 --- a/tests/unit/test_log.py +++ b/tests/unit/test_log.py @@ -52,13 +52,19 @@ class LoggerTestCase(test_utils.BaseTestCase): self.config(verbose=True) log.setup("test_is_verbose") logger = logging.getLogger("test_is_verbose") + self.assertEqual(logging.INFO, logger.getEffectiveLevel()) + + def test_will_be_debug_if_debug_flag_set(self): + self.config(debug=True) + log.setup("test_is_debug") + logger = logging.getLogger("test_is_debug") self.assertEqual(logging.DEBUG, logger.getEffectiveLevel()) def test_will_not_be_verbose_if_verbose_flag_not_set(self): self.config(verbose=False) log.setup("test_is_not_verbose") logger = logging.getLogger("test_is_not_verbose") - self.assertEqual(logging.INFO, logger.getEffectiveLevel()) + self.assertEqual(logging.WARNING, logger.getEffectiveLevel()) def test_no_logging_via_module(self): for func in ('critical', 'error', 'exception', 'warning', 'warn',