Skip to content

Commit f023e2e

Browse files
committed
Fix configuring CLI logging on Python 3.9/3.10
Do not use `logging.getLevelNamesMapping` introduced in 3.11. No need to get the numeric levels at all - just set the configured named levels on the handlers and set DEBUG on the logger. This way, the logger allows all messages, but level filtering is then done by the handlers.
1 parent e7616a3 commit f023e2e

File tree

2 files changed

+8
-12
lines changed

2 files changed

+8
-12
lines changed

src/dstack/_internal/cli/utils/common.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import logging
2-
import os
32
from datetime import datetime, timezone
43
from pathlib import Path
54
from typing import Any, Dict, Union
@@ -9,6 +8,7 @@
98
from rich.table import Table
109
from rich.theme import Theme
1110

11+
from dstack._internal import settings
1212
from dstack._internal.cli.utils.rich import DstackRichHandler
1313
from dstack._internal.core.errors import CLIError, DstackError
1414
from dstack._internal.utils.common import get_dstack_dir
@@ -68,29 +68,22 @@ def configure_logging():
6868

6969
log_file = _get_cli_log_file()
7070

71-
level_names = logging.getLevelNamesMapping()
72-
stdout_level_name = os.getenv("DSTACK_CLI_LOG_LEVEL", "INFO").upper()
73-
stdout_level = level_names[stdout_level_name]
74-
dstack_logger.setLevel(stdout_level)
75-
7671
stdout_handler = DstackRichHandler(console=console)
7772
stdout_handler.setFormatter(logging.Formatter(fmt="%(message)s", datefmt="[%X]"))
78-
stdout_handler.setLevel(stdout_level)
73+
stdout_handler.setLevel(settings.CLI_LOG_LEVEL)
7974
dstack_logger.addHandler(stdout_handler)
8075

81-
file_level_name = os.getenv("DSTACK_CLI_FILE_LOG_LEVEL", "DEBUG").upper()
82-
file_level = level_names[file_level_name]
83-
8476
file_handler = logging.FileHandler(log_file)
8577
file_handler.setFormatter(
8678
logging.Formatter(
8779
fmt="%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
8880
)
8981
)
90-
file_handler.setLevel(file_level)
82+
file_handler.setLevel(settings.CLI_FILE_LOG_LEVEL)
9183
dstack_logger.addHandler(file_handler)
9284

93-
dstack_logger.setLevel(min(stdout_level, file_level))
85+
# the logger allows all messages, filtering is done by the handlers
86+
dstack_logger.setLevel(logging.DEBUG)
9487

9588

9689
def confirm_ask(prompt, **kwargs) -> bool:

src/dstack/_internal/settings.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
)
2020
DSTACK_DIND_IMAGE = os.getenv("DSTACK_DIND_IMAGE", "dstackai/dind")
2121

22+
CLI_LOG_LEVEL = os.getenv("DSTACK_CLI_LOG_LEVEL", "INFO").upper()
23+
CLI_FILE_LOG_LEVEL = os.getenv("DSTACK_CLI_FILE_LOG_LEVEL", "DEBUG").upper()
24+
2225
# Development settings
2326

2427
LOCAL_BACKEND_ENABLED = os.getenv("DSTACK_LOCAL_BACKEND_ENABLED") is not None

0 commit comments

Comments
 (0)