3030import multiversx_sdk_cli .version
3131from multiversx_sdk_cli import config , errors , utils , ux
3232from 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
3434from multiversx_sdk_cli .env import get_address_hrp
3535
3636logger = 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
169190if __name__ == "__main__" :
0 commit comments