summaryrefslogtreecommitdiff
path: root/openstackclient/shell.py
diff options
context:
space:
mode:
authorDean Troyer <dtroyer@gmail.com>2014-05-07 10:54:38 -0500
committerDean Troyer <dtroyer@gmail.com>2014-06-13 17:15:17 -0500
commit67354f651b064c7c67ad749bf75196d59b851d18 (patch)
tree338f43dcddbfad4ef6af53f4be776d40668dd35c /openstackclient/shell.py
parent497a38903c4a282975b2f197bc4af22c15d8ab21 (diff)
downloadpython-openstackclient-67354f651b064c7c67ad749bf75196d59b851d18.tar.gz
Clean up logging levels
The following logging levels are set according to the combination of --verbose, --quiet and --debug options: verbose_level logging level options 0 --quiet ERROR 1 (none) WARNING 2 --verbose INFO 3+ --verbose --verbose DEBUG or --debug Logging levels for the requests and iso8601 modules are forced to ERROR. This is the first step in bp use-logging-not-print The difference between '--debug' and '--verbose --verbose' is --debug triggers cliff's exception handling and traceback display. Change-Id: Ide2233b3316471d279260fb1e7255a6ca2072023
Diffstat (limited to 'openstackclient/shell.py')
-rw-r--r--openstackclient/shell.py53
1 files changed, 44 insertions, 9 deletions
diff --git a/openstackclient/shell.py b/openstackclient/shell.py
index 719ee480..67eaca55 100644
--- a/openstackclient/shell.py
+++ b/openstackclient/shell.py
@@ -123,6 +123,50 @@ class OpenStackShell(app.App):
help="Show this help message and exit",
)
+ def configure_logging(self):
+ """Configure logging for the app
+
+ Cliff sets some defaults we don't want so re-work it a bit
+ """
+
+ if self.options.debug:
+ # --debug forces verbose_level 3
+ # Set this here so cliff.app.configure_logging() can work
+ self.options.verbose_level = 3
+
+ super(OpenStackShell, self).configure_logging()
+ root_logger = logging.getLogger('')
+
+ # Requests logs some stuff at INFO that we don't want
+ # unless we have DEBUG
+ requests_log = logging.getLogger("requests")
+ requests_log.setLevel(logging.ERROR)
+
+ # Other modules we don't want DEBUG output for so
+ # don't reset them below
+ iso8601_log = logging.getLogger("iso8601")
+ iso8601_log.setLevel(logging.ERROR)
+
+ # Set logging to the requested level
+ self.dump_stack_trace = False
+ if self.options.verbose_level == 0:
+ # --quiet
+ root_logger.setLevel(logging.ERROR)
+ elif self.options.verbose_level == 1:
+ # This is the default case, no --debug, --verbose or --quiet
+ root_logger.setLevel(logging.WARNING)
+ elif self.options.verbose_level == 2:
+ # One --verbose
+ root_logger.setLevel(logging.INFO)
+ elif self.options.verbose_level >= 3:
+ # Two or more --verbose
+ root_logger.setLevel(logging.DEBUG)
+ requests_log.setLevel(logging.DEBUG)
+
+ if self.options.debug:
+ # --debug forces traceback
+ self.dump_stack_trace = True
+
def run(self, argv):
try:
return super(OpenStackShell, self).run(argv)
@@ -401,15 +445,6 @@ class OpenStackShell(app.App):
super(OpenStackShell, self).initialize_app(argv)
- # Set requests logging to a useful level
- requests_log = logging.getLogger("requests")
- if self.options.debug:
- requests_log.setLevel(logging.DEBUG)
- self.dump_stack_trace = True
- else:
- requests_log.setLevel(logging.WARNING)
- self.dump_stack_trace = False
-
# Save default domain
self.default_domain = self.options.os_default_domain