Browse Source

Configurable verbosity for log file and stderr

master
JustAnotherArchivist 3 years ago
parent
commit
b29db245fb
1 changed files with 12 additions and 3 deletions
  1. +12
    -3
      qwarc/cli.py

+ 12
- 3
qwarc/cli.py View File

@@ -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)


Loading…
Cancel
Save