diff options
author | Jeremy Liu <liujiong@gohighsec.com> | 2018-03-16 17:09:35 +0800 |
---|---|---|
committer | Jeremy Liu <liujiong@gohighsec.com> | 2018-03-19 16:18:28 +0800 |
commit | a6ac975f7786052c73fb970c0420d956b2852e6e (patch) | |
tree | d4d34cdd23d27c324481efc57b5a18b15fba993e | |
parent | d0bf6c406e402301c09e0ec4a303833713014426 (diff) | |
download | python-barbicanclient-a6ac975f7786052c73fb970c0420d956b2852e6e.tar.gz |
Supress client debug messages
cliff sets log level to DEBUG in `run` function [1], need to overwrite
this configuration to depress DEBUG messages. This patch adds such
configuration in `prepare_to_run_command` function which will be called
by cliff after it sets log level to DEBUG [2][3].
[1] https://github.com/openstack/cliff/blob/master/cliff/app.py#L248
[2] https://github.com/openstack/cliff/blob/master/cliff/app.py#L279
[3] https://github.com/openstack/cliff/blob/master/cliff/app.py#L393
Change-Id: I5c270d74cb09e90b8a98fd8febf587b98db2306f
Closes-bug: #1681966
-rw-r--r-- | barbicanclient/barbican.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/barbicanclient/barbican.py b/barbicanclient/barbican.py index e26eb34..a462f1d 100644 --- a/barbicanclient/barbican.py +++ b/barbicanclient/barbican.py @@ -46,6 +46,13 @@ _IDENTITY_API_VERSION_3 = ['3'] class Barbican(app.App): """Barbican command line interface.""" + # verbose logging levels + WARNING_LEVEL = 0 + INFO_LEVEL = 1 + DEBUG_LEVEL = 2 + CONSOLE_MESSAGE_FORMAT = '%(message)s' + DEBUG_MESSAGE_FORMAT = '%(levelname)s: %(name)s %(message)s' + def __init__(self, **kwargs): self.client = None @@ -328,6 +335,9 @@ class Barbican(app.App): """ self.client_manager = namedtuple('ClientManager', 'key_manager') if cmd.auth_required: + # NOTE(liujiong): cliff sets log level to DEBUG in run function, + # need to overwrite this configuration to depress DEBUG messages. + self.configure_logging() self.client_manager.key_manager = self.create_client(self.options) def run(self, argv): @@ -337,6 +347,26 @@ class Barbican(app.App): return 1 return super(Barbican, self).run(argv) + def configure_logging(self): + """Create logging handlers for any log output.""" + root_logger = logging.getLogger('') + # Set log level to INFO + root_logger.setLevel(logging.INFO) + + # Send higher-level messages to the console via stderr + console = logging.StreamHandler(self.stderr) + console_level = {self.WARNING_LEVEL: logging.WARNING, + self.INFO_LEVEL: logging.INFO, + self.DEBUG_LEVEL: logging.DEBUG, + }.get(self.options.verbose_level, logging.INFO) + if logging.DEBUG == console_level: + formatter = logging.Formatter(self.DEBUG_MESSAGE_FORMAT) + else: + formatter = logging.Formatter(self.CONSOLE_MESSAGE_FORMAT) + console.setFormatter(formatter) + root_logger.addHandler(console) + return + def main(argv=sys.argv[1:]): logging.basicConfig() |