mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Closes #20242: Merged fix from 3.3.
This commit is contained in:
commit
30e6a64e76
3 changed files with 29 additions and 7 deletions
|
@ -390,10 +390,12 @@ class StringTemplateStyle(PercentStyle):
|
||||||
def format(self, record):
|
def format(self, record):
|
||||||
return self._tpl.substitute(**record.__dict__)
|
return self._tpl.substitute(**record.__dict__)
|
||||||
|
|
||||||
|
BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
|
||||||
|
|
||||||
_STYLES = {
|
_STYLES = {
|
||||||
'%': PercentStyle,
|
'%': (PercentStyle, BASIC_FORMAT),
|
||||||
'{': StrFormatStyle,
|
'{': (StrFormatStyle, '{levelname}:{name}:{message}'),
|
||||||
'$': StringTemplateStyle
|
'$': (StringTemplateStyle, '${levelname}:${name}:${message}'),
|
||||||
}
|
}
|
||||||
|
|
||||||
class Formatter(object):
|
class Formatter(object):
|
||||||
|
@ -458,7 +460,7 @@ class Formatter(object):
|
||||||
if style not in _STYLES:
|
if style not in _STYLES:
|
||||||
raise ValueError('Style must be one of: %s' % ','.join(
|
raise ValueError('Style must be one of: %s' % ','.join(
|
||||||
_STYLES.keys()))
|
_STYLES.keys()))
|
||||||
self._style = _STYLES[style](fmt)
|
self._style = _STYLES[style][0](fmt)
|
||||||
self._fmt = self._style._fmt
|
self._fmt = self._style._fmt
|
||||||
self.datefmt = datefmt
|
self.datefmt = datefmt
|
||||||
|
|
||||||
|
@ -1643,8 +1645,6 @@ Logger.manager = Manager(Logger.root)
|
||||||
# Configuration classes and functions
|
# Configuration classes and functions
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s"
|
|
||||||
|
|
||||||
def basicConfig(**kwargs):
|
def basicConfig(**kwargs):
|
||||||
"""
|
"""
|
||||||
Do basic configuration for the logging system.
|
Do basic configuration for the logging system.
|
||||||
|
@ -1718,9 +1718,12 @@ def basicConfig(**kwargs):
|
||||||
stream = kwargs.get("stream")
|
stream = kwargs.get("stream")
|
||||||
h = StreamHandler(stream)
|
h = StreamHandler(stream)
|
||||||
handlers = [h]
|
handlers = [h]
|
||||||
fs = kwargs.get("format", BASIC_FORMAT)
|
|
||||||
dfs = kwargs.get("datefmt", None)
|
dfs = kwargs.get("datefmt", None)
|
||||||
style = kwargs.get("style", '%')
|
style = kwargs.get("style", '%')
|
||||||
|
if style not in _STYLES:
|
||||||
|
raise ValueError('Style must be one of: %s' % ','.join(
|
||||||
|
_STYLES.keys()))
|
||||||
|
fs = kwargs.get("format", _STYLES[style][1])
|
||||||
fmt = Formatter(fs, dfs, style)
|
fmt = Formatter(fs, dfs, style)
|
||||||
for h in handlers:
|
for h in handlers:
|
||||||
if h.formatter is None:
|
if h.formatter is None:
|
||||||
|
|
|
@ -3517,6 +3517,22 @@ class BasicConfigTest(unittest.TestCase):
|
||||||
# level is not explicitly set
|
# level is not explicitly set
|
||||||
self.assertEqual(logging.root.level, self.original_logging_level)
|
self.assertEqual(logging.root.level, self.original_logging_level)
|
||||||
|
|
||||||
|
def test_strformatstyle(self):
|
||||||
|
with captured_stdout() as output:
|
||||||
|
logging.basicConfig(stream=sys.stdout, style="{")
|
||||||
|
logging.error("Log an error")
|
||||||
|
sys.stdout.seek(0)
|
||||||
|
self.assertEqual(output.getvalue().strip(),
|
||||||
|
"ERROR:root:Log an error")
|
||||||
|
|
||||||
|
def test_stringtemplatestyle(self):
|
||||||
|
with captured_stdout() as output:
|
||||||
|
logging.basicConfig(stream=sys.stdout, style="$")
|
||||||
|
logging.error("Log an error")
|
||||||
|
sys.stdout.seek(0)
|
||||||
|
self.assertEqual(output.getvalue().strip(),
|
||||||
|
"ERROR:root:Log an error")
|
||||||
|
|
||||||
def test_filename(self):
|
def test_filename(self):
|
||||||
|
|
||||||
def cleanup(h1, h2, fn):
|
def cleanup(h1, h2, fn):
|
||||||
|
|
|
@ -25,6 +25,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #20242: Fixed basicConfig() format strings for the alternative
|
||||||
|
formatting styles. Thanks to kespindler for the bug report and patch.
|
||||||
|
|
||||||
- Issues #20206 and #5803: Fix edge case in email.quoprimime.encode where it
|
- Issues #20206 and #5803: Fix edge case in email.quoprimime.encode where it
|
||||||
truncated lines ending in a character needing encoding but no newline by
|
truncated lines ending in a character needing encoding but no newline by
|
||||||
using a more efficient algorithm that doesn't have the bug.
|
using a more efficient algorithm that doesn't have the bug.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue