From cadeada955cb17d7776d0f3f5002ccb03c1a34bd Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Thu, 29 Sep 2022 14:29:32 -0700 Subject: [PATCH] Add --logging-config command line option --- octodns/cmds/args.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/octodns/cmds/args.py b/octodns/cmds/args.py index 865a8a1..f0f0e89 100644 --- a/octodns/cmds/args.py +++ b/octodns/cmds/args.py @@ -4,8 +4,10 @@ from argparse import ArgumentParser as _Base from logging import DEBUG, INFO, WARNING, Formatter, StreamHandler, getLogger +from logging.config import dictConfig from logging.handlers import SysLogHandler from sys import stderr, stdout +from yaml import safe_load from octodns import __VERSION__ @@ -55,11 +57,22 @@ class ArgumentParser(_Base): '--quiet', action='store_true', default=False, help=_help ) + _help = 'Configure logging with a YAML file, see https://docs.python.org/3/library/logging.config.html#logging-config-dictschema for schema details' + self.add_argument('--logging-config', default=False, help=_help) + args = super().parse_args() self._setup_logging(args, default_log_level) return args def _setup_logging(self, args, default_log_level): + if args.logging_config: + with open(args.logging_config) as fh: + config = safe_load(fh.read()) + dictConfig(config) + # if we're provided a logging_config we won't do any of our normal + # configuration + return + fmt = '%(asctime)s [%(thread)d] %(levelname)-5s %(name)s %(message)s' formatter = Formatter(fmt=fmt, datefmt='%Y-%m-%dT%H:%M:%S ') stream = stdout if args.log_stream_stdout else stderr