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

Skip to content

Commit 04cc55a

Browse files
committed
Closes #17540: Merged fix from 3.3.
2 parents 609ef01 + 28421c6 commit 04cc55a

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
@@ -672,7 +672,8 @@ def configure_formatter(self, config):
672672
else:
673673
fmt = config.get('format', None)
674674
dfmt = config.get('datefmt', None)
675-
result = logging.Formatter(fmt, dfmt)
675+
style = config.get('style', '%')
676+
result = logging.Formatter(fmt, dfmt, style)
676677
return result
677678

678679
def configure_filter(self, config):
@@ -694,6 +695,7 @@ def add_filters(self, filterer, filters):
694695

695696
def configure_handler(self, config):
696697
"""Configure a handler from a dictionary."""
698+
config_copy = dict(config) # for restoring in case of error
697699
formatter = config.pop('formatter', None)
698700
if formatter:
699701
try:
@@ -717,7 +719,7 @@ def configure_handler(self, config):
717719
try:
718720
th = self.config['handlers'][config['target']]
719721
if not isinstance(th, logging.Handler):
720-
config['class'] = cname # restore for deferred configuration
722+
config.update(config_copy) # restore for deferred cfg
721723
raise TypeError('target not configured yet')
722724
config['target'] = th
723725
except Exception as e:

Lib/test/test_logging.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2449,7 +2449,8 @@ class ConfigDictTest(BaseTest):
24492449
"version": 1,
24502450
"formatters": {
24512451
"mySimpleFormatter": {
2452-
"format": "%(asctime)s (%(name)s) %(levelname)s: %(message)s"
2452+
"format": "%(asctime)s (%(name)s) %(levelname)s: %(message)s",
2453+
"style": "$"
24532454
}
24542455
},
24552456
"handlers": {
@@ -2851,6 +2852,8 @@ def test_out_of_order(self):
28512852
self.apply_config(self.out_of_order)
28522853
handler = logging.getLogger('mymodule').handlers[0]
28532854
self.assertIsInstance(handler.target, logging.Handler)
2855+
self.assertIsInstance(handler.formatter._style,
2856+
logging.StringTemplateStyle)
28542857

28552858
def test_baseconfig(self):
28562859
d = {

Misc/NEWS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,8 @@ Core and Builtins
297297
Library
298298
-------
299299

300+
- Issue #17540: Added style to formatter configuration by dict.
301+
300302
- Issue #16692: The ssl module now supports TLS 1.1 and TLS 1.2. Initial
301303
patch by Michele Orrù.
302304

0 commit comments

Comments
 (0)