| 497 | |
| 498 | |
| 499 | def get_log_level_for_setting(config: Config, *setting_names: str) -> Optional[int]: |
| 500 | for setting_name in setting_names: |
| 501 | log_level = config.getoption(setting_name) |
| 502 | if log_level is None: |
| 503 | log_level = config.getini(setting_name) |
| 504 | if log_level: |
| 505 | break |
| 506 | else: |
| 507 | return None |
| 508 | |
| 509 | if isinstance(log_level, str): |
| 510 | log_level = log_level.upper() |
| 511 | try: |
| 512 | return int(getattr(logging, log_level, log_level)) |
| 513 | except ValueError as e: |
| 514 | # Python logging does not recognise this as a logging level |
| 515 | raise UsageError( |
| 516 | "'{}' is not recognized as a logging level name for " |
| 517 | "'{}'. Please consider passing the " |
| 518 | "logging level num instead.".format(log_level, setting_name) |
| 519 | ) from e |
| 520 | |
| 521 | |
| 522 | # run after terminalreporter/capturemanager are configured |