From de7b5975188c2a4b980453d8e5abf9c7e425a2fe Mon Sep 17 00:00:00 2001 From: InsanePrawn Date: Fri, 6 Jan 2023 02:19:12 +0100 Subject: [PATCH] logger: add --quiet flag to disable non-error logging --- logger.py | 11 +++++++++-- main.py | 6 ++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/logger.py b/logger.py index af0b3f7..63f94b1 100644 --- a/logger.py +++ b/logger.py @@ -6,10 +6,10 @@ import sys from typing import Optional -def setup_logging(verbose: bool, force_colors: Optional[bool] = None, log_setup: bool = True): +def setup_logging(verbose: bool, quiet: bool = False, force_colors: Optional[bool] = None, log_setup: bool = True): level_colors = coloredlogs.DEFAULT_LEVEL_STYLES | {'info': {'color': 'magenta', 'bright': True}, 'debug': {'color': 'blue', 'bright': True}} field_colors = coloredlogs.DEFAULT_FIELD_STYLES | {'asctime': {'color': 'white', 'faint': True}} - level = logging.DEBUG if verbose else logging.INFO + level = logging.DEBUG if verbose and not quiet else (logging.INFO if not quiet else logging.ERROR) coloredlogs.install( stream=sys.stdout, fmt='%(asctime)s %(levelname)s: %(message)s', @@ -34,6 +34,13 @@ verbose_option = click.option( help='Enables verbose logging', ) +quiet_option = click.option( + '-q', + '--quiet', + is_flag=True, + help='Disable most logging, only log errors. (Currently only affects KBS logging, not called subprograms)', +) + color_option = click.option( '--force-colors/--no-colors', is_flag=True, diff --git a/main.py b/main.py index d0d5aa0..04cea11 100755 --- a/main.py +++ b/main.py @@ -7,7 +7,7 @@ from os import isatty from traceback import format_exc, format_exception_only, format_tb from typing import Optional -from logger import color_option, logging, setup_logging, verbose_option +from logger import color_option, logging, quiet_option, setup_logging, verbose_option from wrapper import nowrapper_option, enforce_wrap from progressbar import progress_bars_option @@ -24,19 +24,21 @@ from image.cli import cmd_image @click.group() @click.option('--error-shell', '-E', 'error_shell', is_flag=True, default=False, help='Spawn shell after error occurs') @verbose_option +@quiet_option @config_option @nowrapper_option @color_option @progress_bars_option def cli( verbose: bool = False, + quiet: bool = False, config_file: Optional[str] = None, wrapper_override: Optional[bool] = None, error_shell: bool = False, force_colors: Optional[bool] = None, force_progress_bars: Optional[bool] = None, ): - setup_logging(verbose, force_colors=force_colors) + setup_logging(verbose, quiet=quiet, force_colors=force_colors) # stdout is fd 1 config.runtime.colors = isatty(1) if force_colors is None else force_colors config.runtime.verbose = verbose