summaryrefslogtreecommitdiff
path: root/Doc/howto/logging-cookbook.rst
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2013-03-30 16:29:54 +0100
committerAntoine Pitrou <solipsis@pitrou.net>2013-03-30 16:29:54 +0100
commit9498839a1a29205d65c798a3a6bca272430b83c1 (patch)
treec4d19e95481f2d72fb86584eabf5c1cb925f8a40 /Doc/howto/logging-cookbook.rst
parent912fbff1053c7ebadced3233b18fb951e6d15399 (diff)
parent3fdd4f1935ba1bb4b45d77ed99281b134f3e6d24 (diff)
downloadcpython-git-9498839a1a29205d65c798a3a6bca272430b83c1.tar.gz
Merge
Diffstat (limited to 'Doc/howto/logging-cookbook.rst')
-rw-r--r--Doc/howto/logging-cookbook.rst34
1 files changed, 34 insertions, 0 deletions
diff --git a/Doc/howto/logging-cookbook.rst b/Doc/howto/logging-cookbook.rst
index e11356466c..efd8c1c526 100644
--- a/Doc/howto/logging-cookbook.rst
+++ b/Doc/howto/logging-cookbook.rst
@@ -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