From 6e6b43eb795652f8c0f489ac3e2abef6364481cf Mon Sep 17 00:00:00 2001 From: Vangelis Banos Date: Wed, 20 Mar 2019 11:53:32 +0000 Subject: [PATCH] Add option to load logging conf from JSON file New option `--logging-conf-file` to load `logging` conf from a JSON file. Prefer JSON over the `configparser` format supported by `logging.config.fileConfig` because JSON format is much better (nesting is supported) and its easier to detect errors. --- warcprox/main.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/warcprox/main.py b/warcprox/main.py index 7fe5011..98867b6 100644 --- a/warcprox/main.py +++ b/warcprox/main.py @@ -29,7 +29,9 @@ try: except ImportError: import Queue as queue +import json import logging +import logging.config import sys import hashlib import argparse @@ -239,6 +241,9 @@ def _build_arg_parser(prog='warcprox', show_hidden=False): arg_parser.add_argument( '--trace', dest='trace', action='store_true', help='very verbose logging') + arg_parser.add_argument( + '--logging-conf-file', dest='logging_conf_file', default=None, + help=('reads logging configuration from a JSON file')) arg_parser.add_argument( '--version', action='version', version="warcprox {}".format(warcprox.__version__)) @@ -302,6 +307,11 @@ def main(argv=None): '%(asctime)s %(process)d %(levelname)s %(threadName)s ' '%(name)s.%(funcName)s(%(filename)s:%(lineno)d) %(message)s')) + if args.logging_conf_file: + with open(args.logging_conf_file, 'r') as fd: + conf = json.load(fd) + logging.config.dictConfig(conf) + # see https://github.com/pyca/cryptography/issues/2911 cryptography.hazmat.backends.openssl.backend.activate_builtin_random()