From 77524a333bf992a5691a573dbde68ca22d3712f0 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Fri, 12 Jun 2020 15:00:15 +0000 Subject: [PATCH] Added a management command to list registered loggers, in order to see which can be configured in settings_local with the UTILS_LOGGER_LEVELS settings. - Legacy-Id: 17974 --- ietf/utils/management/commands/showloggers.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 ietf/utils/management/commands/showloggers.py diff --git a/ietf/utils/management/commands/showloggers.py b/ietf/utils/management/commands/showloggers.py new file mode 100644 index 000000000..6f04dd454 --- /dev/null +++ b/ietf/utils/management/commands/showloggers.py @@ -0,0 +1,47 @@ +# Copyright The IETF Trust 2020, All Rights Reserved +# -*- coding: utf-8 -*- + +import logging_tree +import os + +from textwrap import dedent + +from django.core.management.base import BaseCommand + +import debug # pyflakes:ignore + +class Command(BaseCommand): + """ + Display a list or tree representation of python loggers.
+ + Add a UTILS_LOGGER_LEVELS setting in settings_local.py to configure + non-default logging levels for any registered logger, for instance: + + UTILS_LOGGER_LEVELS = { + 'oicd_provider': 'DEBUG', + 'urllib3.connection': 'DEBUG', + } + + """ + + help = dedent(__doc__).strip() + + def add_arguments(self, parser): + parser.add_argument('--tree', action="store_true", default=False, + help='Only list loggers found, without showing the full tree.') + + def handle(self, *filenames, **options): + if options.get('tree'): + self.stdout.write(logging_tree.format.build_description(node=None)) + else: + self.stdout.write("Registered logging.Logger instances by name:") + def show(node): + if len(node) == 3: + name, logger, nodes = node + self.stdout.write(" %s" % (name or '')) + for node in nodes: + show(node) + else: + self.stdout.write('Node: %s' % node) + show(logging_tree.tree()) + self.stdout.write("\nUse '%s --tree' to show the full logger tree" % os.path.splitext(os.path.basename(__file__))[0])