From: Vinay Sajip Date: Mon, 7 Mar 2011 17:59:50 +0000 (+0000) Subject: #Issue 11424: merged fix from 3.1. X-Git-Tag: v3.2.1b1~338 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e783553daaf27d05388d0190ffbf4d0d0a221fba;p=python #Issue 11424: merged fix from 3.1. --- e783553daaf27d05388d0190ffbf4d0d0a221fba diff --cc Lib/logging/config.py index 5afdf9f8d7,25f34ecd24..52797ce41d --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@@ -221,22 -217,26 +221,22 @@@ def _install_loggers(cp, handlers, disa child_loggers = [] #now set up the new ones... for log in llist: - sectname = "logger_%s" % log - qn = cp.get(sectname, "qualname") - opts = cp.options(sectname) - if "propagate" in opts: - propagate = cp.getint(sectname, "propagate") - else: - propagate = 1 + section = cp["logger_%s" % log] + qn = section["qualname"] + propagate = section.getint("propagate", fallback=1) logger = logging.getLogger(qn) if qn in existing: - i = existing.index(qn) + i = existing.index(qn) + 1 # start with the entry after qn prefixed = qn + "." pflen = len(prefixed) num_existing = len(existing) - i = i + 1 # look at the entry after qn - while (i < num_existing) and (existing[i][:pflen] == prefixed): - child_loggers.append(existing[i]) - i = i + 1 + while i < num_existing: + if existing[i][:pflen] == prefixed: + child_loggers.append(existing[i]) + i += 1 existing.remove(qn) - if "level" in opts: - level = cp.get(sectname, "level") + if "level" in section: + level = section["level"] logger.setLevel(logging._levelNames[level]) for h in logger.handlers[:]: logger.removeHandler(h) diff --cc Lib/test/test_logging.py index b29d4005ee,9b36350fbe..e05f7b82b9 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@@ -689,9 -663,53 +721,47 @@@ class ConfigFileTest(BaseTest) datefmt= """ + # config7 adds a compiler logger. + config7 = """ + [loggers] + keys=root,parser,compiler + + [handlers] + keys=hand1 + + [formatters] + keys=form1 + + [logger_root] + level=WARNING + handlers=hand1 + + [logger_compiler] + level=DEBUG + handlers= + propagate=1 + qualname=compiler + + [logger_parser] + level=DEBUG + handlers= + propagate=1 + qualname=compiler.parser + + [handler_hand1] + class=StreamHandler + level=NOTSET + formatter=form1 + args=(sys.stdout,) + + [formatter_form1] + format=%(levelname)s ++ %(message)s + datefmt= + """ + def apply_config(self, conf): - try: - fn = tempfile.mktemp(".ini") - f = open(fn, "w") - f.write(textwrap.dedent(conf)) - f.close() - logging.config.fileConfig(fn) - finally: - os.remove(fn) + file = io.StringIO(textwrap.dedent(conf)) + logging.config.fileConfig(file) def test_config0_ok(self): # A simple config file which overrides the default settings.