Skip to content

Commit d148401

Browse files
committed
set log level from config or cli args
1 parent 20034fa commit d148401

3 files changed

Lines changed: 35 additions & 1 deletion

File tree

multiversx_sdk_cli/cli.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ def _do_main(cli_args: list[str]):
5353
parser = setup_parser(cli_args)
5454
argcomplete.autocomplete(parser)
5555

56+
_handle_log_level_argument(cli_args)
5657
_handle_verbose_argument(cli_args)
5758
args = parser.parse_args(cli_args)
5859

@@ -64,8 +65,9 @@ def _do_main(cli_args: list[str]):
6465
handlers=[RichHandler(show_time=False, rich_tracebacks=True)],
6566
)
6667
else:
68+
level: str = args.log_level
6769
logging.basicConfig(
68-
level="INFO",
70+
level=level.upper(),
6971
format="%(name)s: %(message)s",
7072
handlers=[RichHandler(show_time=False, rich_tracebacks=True)],
7173
)
@@ -111,6 +113,13 @@ def setup_parser(args: list[str]):
111113
version=f"MultiversX Python CLI (mxpy) {version}",
112114
)
113115
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=["debug", "info", "warning", "error"],
121+
help="default: %(default)s",
122+
)
114123

115124
subparsers = parser.add_subparsers()
116125
commands: list[Any] = []
@@ -165,6 +174,17 @@ def _handle_verbose_argument(args: list[str]):
165174
args.insert(0, verbose_arg)
166175

167176

177+
def _handle_log_level_argument(args: list[str]):
178+
log_level_arg = "--log-level"
179+
180+
if log_level_arg in args:
181+
index = args.index(log_level_arg)
182+
log_arg = args.pop(index)
183+
log_value = args.pop(index)
184+
args.insert(0, log_value)
185+
args.insert(0, log_arg)
186+
187+
168188
if __name__ == "__main__":
169189
ret = main(sys.argv[1:])
170190
sys.exit(ret)

multiversx_sdk_cli/config.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,18 @@ def get_defaults() -> dict[str, Any]:
136136
"dependencies.testwallets.urlTemplate.osx": "https://github.com/multiversx/mx-sdk-testwallets/archive/{TAG}.tar.gz",
137137
"dependencies.testwallets.urlTemplate.windows": "https://github.com/multiversx/mx-sdk-testwallets/archive/{TAG}.tar.gz",
138138
"github_api_token": "",
139+
"log_level": "info",
139140
}
140141

141142

143+
def get_log_level_from_config():
144+
log_level = get_value("log_level")
145+
if log_level not in ["debug", "info", "warning", "error"]:
146+
raise errors.LogLevelError(log_level)
147+
148+
return log_level
149+
150+
142151
def get_deprecated_entries_in_config_file():
143152
default_config_keys = set(get_defaults().keys())
144153
current_config_keys = set(get_active().keys())

multiversx_sdk_cli/errors.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,8 @@ def __init__(self, message: str):
211211
class AddressConfigFileError(KnownError):
212212
def __init__(self, message: str):
213213
super().__init__(message)
214+
215+
216+
class LogLevelError(KnownError):
217+
def __init__(self, log_level: str):
218+
super().__init__(f"Log level not accepted: {log_level}. Choose between ['debug', 'info', 'warning', 'error'].")

0 commit comments

Comments
 (0)