[Python-checkins] cpython (3.3): Updated logging cookbook with additional example for output using str.format().

vinay.sajip python-checkins at python.org
Sat Mar 30 12:57:22 CET 2013


http://hg.python.org/cpython/rev/7fd5d9fe9f71
changeset:   83013:7fd5d9fe9f71
branch:      3.3
parent:      83010:b0c0a03b8033
user:        Vinay Sajip <vinay_sajip at yahoo.co.uk>
date:        Sat Mar 30 11:56:18 2013 +0000
summary:
  Updated logging cookbook with additional example for output using str.format().

files:
  Doc/howto/logging-cookbook.rst |  34 ++++++++++++++++++++++
  1 files changed, 34 insertions(+), 0 deletions(-)


diff --git a/Doc/howto/logging-cookbook.rst b/Doc/howto/logging-cookbook.rst
--- a/Doc/howto/logging-cookbook.rst
+++ b/Doc/howto/logging-cookbook.rst
@@ -1096,6 +1096,40 @@
 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
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list