From 28421c6f6264ed33aea31a161ebd77f935437d3f Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Fri, 29 Mar 2013 17:56:54 +0000 Subject: Issue #17540: Added style to Formatter configuration by dict. --- Lib/logging/config.py | 6 ++++-- Lib/test/test_logging.py | 5 ++++- Misc/NEWS | 2 ++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Lib/logging/config.py b/Lib/logging/config.py index 11e79a2..1880614 100644 --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@ -669,7 +669,8 @@ class DictConfigurator(BaseConfigurator): else: fmt = config.get('format', None) dfmt = config.get('datefmt', None) - result = logging.Formatter(fmt, dfmt) + style = config.get('style', '%') + result = logging.Formatter(fmt, dfmt, style) return result def configure_filter(self, config): @@ -691,6 +692,7 @@ class DictConfigurator(BaseConfigurator): def configure_handler(self, config): """Configure a handler from a dictionary.""" + config_copy = dict(config) # for restoring in case of error formatter = config.pop('formatter', None) if formatter: try: @@ -714,7 +716,7 @@ class DictConfigurator(BaseConfigurator): try: th = self.config['handlers'][config['target']] if not isinstance(th, logging.Handler): - config['class'] = cname # restore for deferred configuration + config.update(config_copy) # restore for deferred cfg raise TypeError('target not configured yet') config['target'] = th except Exception as e: diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index 2ff8c91..c9a051a 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -2398,7 +2398,8 @@ class ConfigDictTest(BaseTest): "version": 1, "formatters": { "mySimpleFormatter": { - "format": "%(asctime)s (%(name)s) %(levelname)s: %(message)s" + "format": "%(asctime)s (%(name)s) %(levelname)s: %(message)s", + "style": "$" } }, "handlers": { @@ -2728,6 +2729,8 @@ class ConfigDictTest(BaseTest): self.apply_config(self.out_of_order) handler = logging.getLogger('mymodule').handlers[0] self.assertIsInstance(handler.target, logging.Handler) + self.assertIsInstance(handler.formatter._style, + logging.StringTemplateStyle) def test_baseconfig(self): d = { diff --git a/Misc/NEWS b/Misc/NEWS index 7034bcd..8c016a4 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -200,6 +200,8 @@ Core and Builtins Library ------- +- Issue #17540: Added style to formatter configuration by dict. + - Issue #17536: Add to webbrowser's browser list: www-browser, x-www-browser, iceweasel, iceape. -- cgit v0.12