From 60ea42946acb2af8dc40eb4cc6fe09d2be56d0c3 Mon Sep 17 00:00:00 2001 From: Alfredo Deza Date: Fri, 6 Mar 2015 09:51:26 -0500 Subject: [PATCH] use the new logging handlers in cli.py Signed-off-by: Alfredo Deza --- radosgw_agent/cli.py | 64 ++++++++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/radosgw_agent/cli.py b/radosgw_agent/cli.py index e166e01..ff70006 100644 --- a/radosgw_agent/cli.py +++ b/radosgw_agent/cli.py @@ -8,8 +8,14 @@ import yaml import sys from radosgw_agent import client +from radosgw_agent import util +from radosgw_agent.util.decorators import catches +from radosgw_agent.exceptions import AgentError, RegionMapError from radosgw_agent import sync +log = logging.getLogger() + + def check_positive_int(string): value = int(string) if value < 1: @@ -17,6 +23,7 @@ def check_positive_int(string): raise argparse.ArgumentTypeError(msg) return value + def check_endpoint(endpoint): try: return client.parse_endpoint(endpoint) @@ -25,6 +32,7 @@ def check_endpoint(endpoint): except client.InvalidHost as e: raise argparse.ArgumentTypeError(str(e)) + def parse_args(): conf_parser = argparse.ArgumentParser(add_help=False) conf_parser.add_argument( @@ -232,29 +240,38 @@ class TestHandler(BaseHTTPRequestHandler): self.send_response(status) self.end_headers() + +@catches((KeyboardInterrupt, RuntimeError, AgentError,), handle_all=True) def main(): args = parse_args() - log = logging.getLogger() - log_level = logging.INFO - lib_log_level = logging.WARN + + # root (a.k.a. 'parent') and agent loggers + root_logger = logging.getLogger() + + # allow all levels at root_logger, handlers control individual levels + root_logger.setLevel(logging.DEBUG) + + # Console handler, meant only for user-facing information + console_loglevel = logging.INFO if args.verbose: - log_level = logging.DEBUG - lib_log_level = logging.DEBUG + console_loglevel = logging.DEBUG elif args.quiet: - log_level = logging.WARN - logging.basicConfig(level=log_level) - logging.getLogger('boto').setLevel(lib_log_level) + console_loglevel = logging.WARN + + sh = logging.StreamHandler() + sh.setFormatter(util.log.color_format()) + sh.setLevel(logging.WARNING) + sh.setLevel(console_loglevel) - if args.log_file is not None: - handler = logging.handlers.WatchedFileHandler( - filename=args.log_file, - ) - formatter = logging.Formatter( - fmt='%(asctime)s.%(msecs)03d %(process)d:%(levelname)s:%(name)s:%(message)s', - datefmt='%Y-%m-%dT%H:%M:%S', - ) - handler.setFormatter(formatter) - logging.getLogger().addHandler(handler) + # File handler + log_file = args.log_file or 'radosgw_agent.log' + fh = logging.handlers.WatchedFileHandler(log_file) + fh.setLevel(logging.DEBUG) + fh.setFormatter(logging.Formatter(util.log.BASE_FORMAT)) + + root_logger.addHandler(fh) + agent_logger = logging.getLogger('radosgw_agent') + agent_logger.addHandler(sh) dest = args.destination dest.access_key = args.dest_access_key @@ -266,15 +283,10 @@ def main(): try: region_map = client.get_region_map(dest_conn) - except Exception: - log.exception('Could not retrieve region map from destination') - sys.exit(1) + except Exception as error: + raise RegionMapError(error) - try: - client.configure_endpoints(region_map, dest, src, args.metadata_only) - except client.ClientException as e: - log.error(e) - sys.exit(1) + client.configure_endpoints(region_map, dest, src, args.metadata_only) src.access_key = args.src_access_key src.secret_key = args.src_secret_key -- 2.47.3