Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 28421c6

Browse files
committed
Issue #17540: Added style to Formatter configuration by dict.
1 parent 6d2bc6e commit 28421c6

3 files changed

Lines changed: 10 additions & 3 deletions

File tree

Lib/logging/config.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,8 @@ def configure_formatter(self, config):
669669
else:
670670
fmt = config.get('format', None)
671671
dfmt = config.get('datefmt', None)
672-
result = logging.Formatter(fmt, dfmt)
672+
style = config.get('style', '%')
673+
result = logging.Formatter(fmt, dfmt, style)
673674
return result
674675

675676
def configure_filter(self, config):
@@ -691,6 +692,7 @@ def add_filters(self, filterer, filters):
691692

692693
def configure_handler(self, config):
693694
"""Configure a handler from a dictionary."""
695+
config_copy = dict(config) # for restoring in case of error
694696
formatter = config.pop('formatter', None)
695697
if formatter:
696698
try:
@@ -714,7 +716,7 @@ def configure_handler(self, config):
714716
try:
715717
th = self.config['handlers'][config['target']]
716718
if not isinstance(th, logging.Handler):
717-
config['class'] = cname # restore for deferred configuration
719+
config.update(config_copy) # restore for deferred cfg
718720
raise TypeError('target not configured yet')
719721
config['target'] = th
720722
except Exception as e:

Lib/test/test_logging.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2398,7 +2398,8 @@ class ConfigDictTest(BaseTest):
23982398
"version": 1,
23992399
"formatters": {
24002400
"mySimpleFormatter": {
2401-
"format": "%(asctime)s (%(name)s) %(levelname)s: %(message)s"
2401+
"format": "%(asctime)s (%(name)s) %(levelname)s: %(message)s",
2402+
"style": "$"
24022403
}
24032404
},
24042405
"handlers": {
@@ -2728,6 +2729,8 @@ def test_out_of_order(self):
27282729
self.apply_config(self.out_of_order)
27292730
handler = logging.getLogger('mymodule').handlers[0]
27302731
self.assertIsInstance(handler.target, logging.Handler)
2732+
self.assertIsInstance(handler.formatter._style,
2733+
logging.StringTemplateStyle)
27312734

27322735
def test_baseconfig(self):
27332736
d = {

Misc/NEWS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ Core and Builtins
200200
Library
201201
-------
202202

203+
- Issue #17540: Added style to formatter configuration by dict.
204+
203205
- Issue #17536: Add to webbrowser's browser list: www-browser, x-www-browser,
204206
iceweasel, iceape.
205207

0 commit comments

Comments
 (0)