From 5d40529c74eac2072308de37a30d6da382adc2bd Mon Sep 17 00:00:00 2001 From: David Douard <david.douard@sdfa3.org> Date: Thu, 31 Jan 2019 13:35:56 +0100 Subject: [PATCH] Make cli tools output logs on the console by default for other log levels than DEBUG, and add a --no-stdout option flag to disable this. --- swh/scheduler/celery_backend/config.py | 14 ++++++++++---- swh/scheduler/cli.py | 7 +++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/swh/scheduler/celery_backend/config.py b/swh/scheduler/celery_backend/config.py index f5331f16..11e8c5e1 100644 --- a/swh/scheduler/celery_backend/config.py +++ b/swh/scheduler/celery_backend/config.py @@ -36,10 +36,12 @@ DEFAULT_CONFIG = { 'task_soft_time_limit': ('int', 0), } +logger = logging.getLogger(__name__) + @setup_logging.connect def setup_log_handler(loglevel=None, logfile=None, format=None, - colorize=None, **kwargs): + colorize=None, log_console=True, **kwargs): """Setup logging according to Software Heritage preferences. We use the command-line loglevel for tasks only, as we never @@ -55,7 +57,9 @@ def setup_log_handler(loglevel=None, logfile=None, format=None, root_logger = logging.getLogger('') root_logger.setLevel(logging.INFO) - if loglevel == logging.DEBUG: + if loglevel <= logging.DEBUG: + log_console = True + if log_console: color_formatter = ColorFormatter(format) if colorize else formatter console = logging.StreamHandler() console.setLevel(logging.DEBUG) @@ -94,6 +98,8 @@ def setup_queues_and_tasks(sender, instance, **kwargs): """ + logger.info('Setup Queues & Tasks for %s', sender) + for module_name in itertools.chain( # celery worker -I flag instance.app.conf['include'], @@ -259,8 +265,8 @@ def build_app(config=None): config = merge_configs( {k: v for (k, (_, v)) in DEFAULT_CONFIG.items()}, config or {}) - logging.getLogger(__name__).info( - 'Creating a Celery app with %s', config) + + logger.debug('Creating a Celery app with %s', config) # Instantiate the Celery app app = Celery(broker=config['task_broker'], diff --git a/swh/scheduler/cli.py b/swh/scheduler/cli.py index 925c1819..dbda5bd4 100644 --- a/swh/scheduler/cli.py +++ b/swh/scheduler/cli.py @@ -93,8 +93,10 @@ def pretty_print_task(task, full=False): @click.option('--log-level', '-l', default='INFO', type=click.Choice(logging._nameToLevel.keys()), help="Log level (default to INFO)") +@click.option('--no-stdout', is_flag=True, default=False, + help="Do NOT output logs on the console") @click.pass_context -def cli(ctx, config_file, database, url, log_level): +def cli(ctx, config_file, database, url, log_level, no_stdout): """Software Heritage Scheduler CLI interface Default to use the the local scheduler instance (plugged to the @@ -104,7 +106,8 @@ def cli(ctx, config_file, database, url, log_level): from swh.scheduler.celery_backend.config import setup_log_handler log_level = setup_log_handler( loglevel=log_level, colorize=False, - format='[%(levelname)s] %(name)s -- %(message)s') + format='[%(levelname)s] %(name)s -- %(message)s', + log_console=not no_stdout) ctx.ensure_object(dict) -- GitLab