def main(): """Main command-line interface""" parser = create_parser() args = parser.parse_args() config_logger( stream=True, stream_level=args.verbose, file=True, log_path=get_log_dir(), ) logger.debug(args) module = importlib.import_module('andes.main') if args.command in ('plot', 'doc'): pass elif args.command == 'run' and args.no_preamble is True: pass else: preamble() if args.command is None: parser.parse_args(sys.argv.append('--help')) else: func = getattr(module, args.command) return func(cli=True, **vars(args))
def main(): """ Main command-line interface """ parser = create_parser() args = parser.parse_args() if args.version is True: print(get_versions()['version']) return # Set up logging config_logger( stream=True, stream_level=args.verbose, file=True, log_path=get_log_dir(), ) logger.debug(args) module = importlib.import_module('andes.main') if args.command in ('plot', 'doc'): pass elif args.command == 'run' and args.no_preamble is True: pass else: preamble() # Run the command if args.command is None: parser.parse_args(sys.argv.append('--help')) else: cmd = args.command for fullcmd, aliases in command_aliases.items(): if cmd in aliases: cmd = fullcmd func = getattr(module, cmd) return func(cli=True, **vars(args))
def main(): """Main command-line interface""" parser = create_parser() args = parser.parse_args() config_logger(log_path=get_log_dir(), file=True, stream=True, stream_level=args.verbose) preamble() logger.debug(args) module = importlib.import_module('andes.main') if args.command is None: parser.parse_args(sys.argv.append('--help')) else: func = getattr(module, args.command) func(**vars(args))
def config_logger( stream=True, file=True, stream_level=logging.INFO, log_file='andes.log', log_path=None, file_level=logging.DEBUG, ): """ Configure a logger for the andes package with options for a `FileHandler` and a `StreamHandler`. This function is called at the beginning of ``andes.main.main()``. Parameters ---------- stream : bool, optional Create a `StreamHandler` for `stdout` if ``True``. If ``False``, the handler will not be created. file : bool, optionsl True if logging to ``log_file``. log_file : str, optional Logg file name for `FileHandler`, ``'andes.log'`` by default. If ``None``, the `FileHandler` will not be created. log_path : str, optional Path to store the log file. By default, the path is generated by get_log_dir() in utils.misc. stream_level : {10, 20, 30, 40, 50}, optional `StreamHandler` verbosity level. file_level : {10, 20, 30, 40, 50}, optional `FileHandler` verbosity level. Returns ------- None """ lg = logging.getLogger('andes') lg.setLevel(logging.DEBUG) if log_path is None: log_path = get_log_dir() sh_formatter_str = '%(message)s' if stream_level == 1: sh_formatter_str = '%(name)s:%(lineno)d - %(levelname)s - %(message)s' stream_level = 10 sh_formatter = logging.Formatter(sh_formatter_str) if len(lg.handlers) == 0: if stream is True: sh = logging.StreamHandler() sh.setFormatter(sh_formatter) sh.setLevel(stream_level) lg.addHandler(sh) # file handler for level DEBUG and up if file is True and (log_file is not None): log_full_path = os.path.join(log_path, log_file) fh_formatter = logging.Formatter( '%(process)d: %(asctime)s - %(name)s - %(levelname)s - %(message)s' ) fh = logging.FileHandler(log_full_path) fh.setLevel(file_level) fh.setFormatter(fh_formatter) lg.addHandler(fh) globals()['logger'] = lg if not is_interactive(): coloredlogs.install(logger=lg, level=stream_level, fmt=sh_formatter_str)