diff --git a/qwarc/cli.py b/qwarc/cli.py index a69b1d9..25e1c6e 100644 --- a/qwarc/cli.py +++ b/qwarc/cli.py @@ -9,19 +9,24 @@ import qwarc.version import sys -def setup_logging(logFilename): +def setup_logging(logFilename, logLevel, logLevelStderr): + if logLevelStderr is None: + logLevelStderr = logLevel + rootLogger = logging.getLogger() rootLogger.handlers = [] - rootLogger.setLevel(logging.INFO) + rootLogger.setLevel(min(logLevel, logLevelStderr)) formatter = qwarc.utils.LogFormatter() fileHandler = logging.FileHandler(logFilename) fileHandler.setFormatter(formatter) + fileHandler.setLevel(logLevel) rootLogger.addHandler(fileHandler) stderrHandler = logging.StreamHandler() stderrHandler.setFormatter(formatter) + stderrHandler.setLevel(logLevelStderr) rootLogger.addHandler(stderrHandler) @@ -43,6 +48,8 @@ def main(): parser = argparse.ArgumentParser(formatter_class = argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('--version', action = 'version', version = f'qwarc {qwarc.version.__version__}') parser.add_argument('--log', metavar = 'LOGFILE', default = './qwarc.log') + parser.add_argument('--loglevel', metavar = 'LEVEL', help = 'verbosity of the log file', choices = ('INFO', 'DEBUG'), default = 'INFO') + parser.add_argument('--loglevelstderr', metavar = 'LEVEL', help = 'verbosity of the log messages on stderr; set equal to the log file level if None', choices = (None, 'CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG'), default = None) parser.add_argument('--database', metavar = 'DBFILE', default = './qwarc.db') parser.add_argument('--warc', metavar = 'PREFIX', help = 'prefix for the WARC filenames', default = './qwarc') parser.add_argument('--concurrency', type = int, default = 1) @@ -53,11 +60,13 @@ def main(): parser.add_argument('specfile') args = parser.parse_args() + args.loglevel = getattr(logging, args.loglevel) + args.loglevelstderr = getattr(logging, args.loglevelstderr) if args.loglevelstderr is not None else args.loglevel if not check_files(args.specfile, args.log): sys.exit(1) - setup_logging(args.log) + setup_logging(args.log, args.loglevel, args.loglevelstderr) spec = importlib.util.spec_from_file_location('spec', args.specfile) specMod = importlib.util.module_from_spec(spec)