Commit ff4b7bfa authored by Vinay Sajip's avatar Vinay Sajip

Merged cookbook improvement from 3.2.

parents 86798d4f 39b83ac7
...@@ -972,12 +972,13 @@ Use of alternative formatting styles ...@@ -972,12 +972,13 @@ Use of alternative formatting styles
When logging was added to the Python standard library, the only way of When logging was added to the Python standard library, the only way of
formatting messages with variable content was to use the %-formatting formatting messages with variable content was to use the %-formatting
method. Since then, Python has gained two new formatting approaches: method. Since then, Python has gained two new formatting approaches:
string.Template (added in Python 2.4) and str.format (added in Python 2.6). :class:`string.Template` (added in Python 2.4) and :meth:`str.format`
(added in Python 2.6).
Logging now (as of 3.2) provides improved support for these two additional Logging (as of 3.2) provides improved support for these two additional
formatting styles. The :class:`Formatter` class been enhanced for Python 3.2 to formatting styles. The :class:`Formatter` class been enhanced to take an
take an additional, optional keyword parameter named ``style``. This defaults additional, optional keyword parameter named ``style``. This defaults to
to ``'%'``, but other possible values are ``'{'`` and ``'$'``, which correspond ``'%'``, but other possible values are ``'{'`` and ``'$'``, which correspond
to the other two formatting styles. Backwards compatibility is maintained by to the other two formatting styles. Backwards compatibility is maintained by
default (as you would expect), but by explicitly specifying a style parameter, default (as you would expect), but by explicitly specifying a style parameter,
you get the ability to specify format strings which work with you get the ability to specify format strings which work with
...@@ -1068,7 +1069,7 @@ they're declared in a module called ``wherever``): ...@@ -1068,7 +1069,7 @@ they're declared in a module called ``wherever``):
.. code-block:: pycon .. code-block:: pycon
>>> from wherever import BraceMessage as __ >>> from wherever import BraceMessage as __
>>> print(__('Message with {0} {1}', 2, 'placeholders')) >>> print(__('Message with {0} {name}', 2, name='placeholders'))
Message with 2 placeholders Message with 2 placeholders
>>> class Point: pass >>> class Point: pass
... ...
...@@ -1083,6 +1084,10 @@ they're declared in a module called ``wherever``): ...@@ -1083,6 +1084,10 @@ they're declared in a module called ``wherever``):
Message with 2 placeholders Message with 2 placeholders
>>> >>>
While the above examples use ``print()`` to show how the formatting works, you
would of course use ``logger.debug()`` or similar to actually log using this
approach.
One thing to note is that you pay no significant performance penalty with this One thing to note is that you pay no significant performance penalty with this
approach: the actual formatting happens not when you make the logging call, but approach: the actual formatting happens not when you make the logging call, but
when (and if) the logged message is actually about to be output to a log by a when (and if) the logged message is actually about to be output to a log by a
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment