Merged documentation update from 3.3.
This commit is contained in:
commit
3fdd4f1935
|
@ -1094,6 +1094,40 @@ parentheses go around the format string and the arguments, not just the format
|
|||
string. That's because the __ notation is just syntax sugar for a constructor
|
||||
call to one of the XXXMessage classes.
|
||||
|
||||
If you prefer, you can use a :class:`LoggerAdapter` to achieve a similar effect
|
||||
to the above, as in the following example::
|
||||
|
||||
import logging
|
||||
|
||||
class Message(object):
|
||||
def __init__(self, fmt, args):
|
||||
self.fmt = fmt
|
||||
self.args = args
|
||||
|
||||
def __str__(self):
|
||||
return self.fmt.format(*self.args)
|
||||
|
||||
class StyleAdapter(logging.LoggerAdapter):
|
||||
def __init__(self, logger, extra=None):
|
||||
super(StyleAdapter, self).__init__(logger, extra or {})
|
||||
|
||||
def log(self, level, msg, *args, **kwargs):
|
||||
if self.isEnabledFor(level):
|
||||
msg, kwargs = self.process(msg, kwargs)
|
||||
self.logger._log(level, Message(msg, args), (), **kwargs)
|
||||
|
||||
logger = StyleAdapter(logging.getLogger(__name__))
|
||||
|
||||
def main():
|
||||
logger.debug('Hello, {}', 'world!')
|
||||
|
||||
if __name__ == '__main__':
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
main()
|
||||
|
||||
The above script should log the message ``Hello, world!`` when run with
|
||||
Python 3.2 or later.
|
||||
|
||||
|
||||
.. currentmodule:: logging
|
||||
|
||||
|
|
Loading…
Reference in New Issue