Source code for dae.utils.verbosity_configuration

"""Provides common configuration for loggers verbosity."""
import argparse
import logging


[docs] class VerbosityConfiguration: """Defines common configuration of verbosity for loggers."""
[docs] @staticmethod def set_arguments(parser: argparse.ArgumentParser) -> None: """Add verbosity arguments to argument parser.""" parser.add_argument("--verbose", "-v", "-V", action="count", default=0) parser.add_argument( "--logfile", type=str, default=None, help="File to log output to. If not set, logs to console.", )
[docs] @staticmethod def set(args: argparse.Namespace | dict[str, str]) -> None: """Read verbosity settings from parsed arguments and sets logger.""" if isinstance(args, argparse.Namespace): args = vars(args) verbosity = int(args.get("verbose", 0)) loglevel = VerbosityConfiguration.verbosity(verbosity) logging.basicConfig( filename=args["logfile"], encoding="utf-8", level=loglevel, ) VerbosityConfiguration.adjust_verbosity(loglevel)
[docs] @staticmethod def verbosity(verbosity: int) -> int: """Get verbosity level from loglevel.""" if verbosity == 1: loglevel = logging.INFO elif verbosity >= 2: loglevel = logging.DEBUG else: loglevel = logging.WARNING return loglevel
[docs] @staticmethod def adjust_verbosity(loglevel: int) -> None: """Set logging level according to the verbosity specified.""" logging.getLogger("dae.effect_annotation").setLevel( max(loglevel, logging.INFO)) logging.getLogger("impala").setLevel(logging.WARNING) logging.getLogger("distributed").setLevel(logging.WARNING) logging.getLogger("bokeh").setLevel(logging.ERROR) logging.getLogger("fsspec").setLevel(max(loglevel, logging.INFO)) logging.getLogger("matplotlib").setLevel(max(loglevel, logging.INFO)) logging.getLogger("botocore").setLevel(max(loglevel, logging.INFO)) logging.getLogger("s3fs").setLevel(max(loglevel, logging.INFO))