Skip to content

Commit 7c06fe8

Browse files
authored
Merge pull request #528 from multiversx/set-log-level
Set log level from config or cli args
2 parents 21c77d3 + a5f7c3b commit 7c06fe8

3 files changed

Lines changed: 44 additions & 9 deletions

File tree

multiversx_sdk_cli/cli.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import multiversx_sdk_cli.version
3131
from multiversx_sdk_cli import config, errors, utils, ux
3232
from multiversx_sdk_cli.cli_shared import set_proxy_from_config_if_not_provided
33-
from multiversx_sdk_cli.constants import SDK_PATH
33+
from multiversx_sdk_cli.constants import LOG_LEVELS, SDK_PATH
3434
from multiversx_sdk_cli.env import get_address_hrp
3535

3636
logger = logging.getLogger("cli")
@@ -54,7 +54,7 @@ def _do_main(cli_args: list[str]):
5454
parser = setup_parser(cli_args)
5555
argcomplete.autocomplete(parser)
5656

57-
_handle_verbose_argument(cli_args)
57+
_handle_global_arguments(cli_args)
5858
args = parser.parse_args(cli_args)
5959

6060
if args.verbose:
@@ -65,8 +65,9 @@ def _do_main(cli_args: list[str]):
6565
handlers=[RichHandler(show_time=False, rich_tracebacks=True)],
6666
)
6767
else:
68+
level: str = args.log_level
6869
logging.basicConfig(
69-
level="INFO",
70+
level=level.upper(),
7071
format="%(name)s: %(message)s",
7172
handlers=[RichHandler(show_time=False, rich_tracebacks=True)],
7273
)
@@ -112,6 +113,13 @@ def setup_parser(args: list[str]):
112113
version=f"MultiversX Python CLI (mxpy) {version}",
113114
)
114115
parser.add_argument("--verbose", action="store_true", default=False)
116+
parser.add_argument(
117+
"--log-level",
118+
type=str,
119+
default=config.get_log_level_from_config(),
120+
choices=LOG_LEVELS,
121+
help="default: %(default)s",
122+
)
115123

116124
subparsers = parser.add_subparsers()
117125
commands: list[Any] = []
@@ -159,11 +167,24 @@ def verify_deprecated_entries_in_config_file():
159167
ux.show_warning(message.rstrip("\n"))
160168

161169

162-
def _handle_verbose_argument(args: list[str]):
163-
verbose_arg = "--verbose"
164-
if verbose_arg in args:
165-
args.remove(verbose_arg)
166-
args.insert(0, verbose_arg)
170+
def _handle_global_arguments(args: list[str]):
171+
"""
172+
Handle global arguments like --verbose and --log-level.
173+
"""
174+
log_level_arg = "--log-level"
175+
if log_level_arg in args:
176+
index = args.index(log_level_arg)
177+
if index + 1 >= len(args):
178+
raise ValueError(f"Argument {log_level_arg} must be followed by a log level value.")
179+
180+
log_arg = args.pop(index)
181+
log_value = args.pop(index)
182+
args.insert(0, log_value)
183+
args.insert(0, log_arg)
184+
185+
if "--verbose" in args:
186+
args.remove("--verbose")
187+
args.insert(0, "--verbose")
167188

168189

169190
if __name__ == "__main__":

multiversx_sdk_cli/config.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
from multiversx_sdk import NetworkProviderConfig
77

88
from multiversx_sdk_cli import errors, utils
9-
from multiversx_sdk_cli.constants import SDK_PATH
9+
from multiversx_sdk_cli.constants import LOG_LEVELS, SDK_PATH
10+
from multiversx_sdk_cli.ux import show_warning
1011

1112
LOCAL_CONFIG_PATH = Path("mxpy.json").resolve()
1213
GLOBAL_CONFIG_PATH = SDK_PATH / "mxpy.json"
@@ -136,9 +137,20 @@ def get_defaults() -> dict[str, Any]:
136137
"dependencies.testwallets.urlTemplate.osx": "https://github.com/multiversx/mx-sdk-testwallets/archive/{TAG}.tar.gz",
137138
"dependencies.testwallets.urlTemplate.windows": "https://github.com/multiversx/mx-sdk-testwallets/archive/{TAG}.tar.gz",
138139
"github_api_token": "",
140+
"log_level": "info",
139141
}
140142

141143

144+
def get_log_level_from_config() -> str:
145+
log_level = get_value("log_level")
146+
if log_level not in LOG_LEVELS:
147+
default_log_level: str = get_defaults()["log_level"]
148+
show_warning(f"Invalid log level set in config: [{log_level}]. Defaulting to [{default_log_level}].")
149+
return default_log_level
150+
151+
return log_level
152+
153+
142154
def get_deprecated_entries_in_config_file():
143155
default_config_keys = set(get_defaults().keys())
144156
current_config_keys = set(get_active().keys())

multiversx_sdk_cli/constants.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,5 @@
3030
MAINCHAIN_ADDRESS_HRP = "erd"
3131

3232
SDK_PATH = Path("~/multiversx-sdk").expanduser().resolve()
33+
34+
LOG_LEVELS = ["debug", "info", "warning", "error"]

0 commit comments

Comments
 (0)