mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-python
synced 2026-01-15 09:53:32 +01:00
Cmds.py: Add early evaluation of --log-xxx
jwutils.log.set_flags() and .set_level() is not set until after all commands are loaded. This can make debugging complicated. OTOH, command-line parsing is also not done until all commands are loaded, because they define the command line options. This commit adds some poor man's command line parsing for fetching --log-level and --log-flags only, and applying them before the commands are all loaded. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
dc532704d0
commit
e48fa1b00a
1 changed files with 19 additions and 4 deletions
|
|
@ -14,10 +14,26 @@ class Cmds: # export
|
||||||
self.__description = description
|
self.__description = description
|
||||||
self.__filter = filter
|
self.__filter = filter
|
||||||
self.__modules = modules
|
self.__modules = modules
|
||||||
|
default_log_level = jwutils.log.NOTICE
|
||||||
|
default_log_flags = 'stderr,position,prio,color'
|
||||||
|
# poor man's parsing in the absence of a complete command-line definition
|
||||||
|
for i in range(1, len(sys.argv)):
|
||||||
|
if i >= len(sys.argv) - 1:
|
||||||
|
break
|
||||||
|
arg = sys.argv[i]
|
||||||
|
if arg == '--log-level':
|
||||||
|
i += 1
|
||||||
|
default_log_level = sys.argv[i]
|
||||||
|
continue
|
||||||
|
if arg == '--log-flags':
|
||||||
|
default_log_flags = sys.argv[i]
|
||||||
|
continue
|
||||||
|
jwutils.log.set_flags(default_log_flags)
|
||||||
|
jwutils.log.set_level(default_log_level)
|
||||||
self.__parser = argparse.ArgumentParser(usage=os.path.basename(sys.argv[0]) + ' [command] [options]',
|
self.__parser = argparse.ArgumentParser(usage=os.path.basename(sys.argv[0]) + ' [command] [options]',
|
||||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=self.__description)
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=self.__description)
|
||||||
self.__parser.add_argument('--log-flags', help='Log flags', default='stderr,position,prio,color')
|
self.__parser.add_argument('--log-flags', help='Log flags', default=default_log_flags)
|
||||||
self.__parser.add_argument('--log-level', help='Log level', default=jwutils.log.NOTICE)
|
self.__parser.add_argument('--log-level', help='Log level', default=default_log_level)
|
||||||
self.eloop = eloop
|
self.eloop = eloop
|
||||||
self.__own_eloop = False
|
self.__own_eloop = False
|
||||||
if eloop is None:
|
if eloop is None:
|
||||||
|
|
@ -39,10 +55,9 @@ class Cmds: # export
|
||||||
cmd.add_parser(subparsers)
|
cmd.add_parser(subparsers)
|
||||||
|
|
||||||
async def __run(self):
|
async def __run(self):
|
||||||
#async def __run(self):
|
|
||||||
args = self.__parser.parse_args()
|
args = self.__parser.parse_args()
|
||||||
jwutils.log.set_level(args.log_level)
|
|
||||||
jwutils.log.set_flags(args.log_flags)
|
jwutils.log.set_flags(args.log_flags)
|
||||||
|
jwutils.log.set_level(args.log_level)
|
||||||
return await args.func(args)
|
return await args.func(args)
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue