def init_log_and_parse()

in community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/scripts/util.py [0:0]


def init_log_and_parse(parser: argparse.ArgumentParser) -> argparse.Namespace:
    parser.add_argument(
        "--debug",
        "-d",
        dest="loglevel",
        action="store_const",
        const=logging.DEBUG,
        default=logging.INFO,
        help="Enable debugging output",
    )
    parser.add_argument(
        "--trace-api",
        "-t",
        action="store_true",
        help="Enable detailed api request output",
    )
    args = parser.parse_args()
    loglevel = args.loglevel
    if lookup().cfg.enable_debug_logging:
        loglevel = logging.DEBUG
    if args.trace_api:
        lookup().cfg.extra_logging_flags["trace_api"] = True
    # Configure root logger
    logging.config.dictConfig({
        "version": 1,
        "disable_existing_loggers": True,
        "formatters": {
            "standard": {
                "format": "%(levelname)s: %(message)s",
            },
            "stamp": {
                "format": "%(asctime)s %(levelname)s: %(message)s",
            },
        },
        "handlers": {
            "stdout_handler": {
                "level": logging.DEBUG,
                "formatter": "standard",
                "class": "logging.StreamHandler",
                "stream": sys.stdout,
            },
            "file_handler": {
                "()": owned_file_handler,
                "level": logging.DEBUG,
                "formatter": "stamp",
                "filename": get_log_path(),
            },
        },
        "root": {
            "handlers": ["stdout_handler", "file_handler"],
            "level": loglevel,
        },
    })

    sys.excepthook = _handle_exception

    return args