]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] [docs] Update logging cookbook with recipe for using a logger like an output...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 2 Oct 2022 16:44:42 +0000 (09:44 -0700)
committerPablo Galindo <pablogsal@gmail.com>
Sat, 22 Oct 2022 19:05:46 +0000 (20:05 +0100)
Doc/howto/logging-cookbook.rst

index 25ea37fc5ac9d46ea7e78a0819582b41b53d172e..d1c3534a835166da3ae30f5f234822e376978a78 100644 (file)
@@ -3703,83 +3703,6 @@ instance). Then, you'd get this kind of result:
 Of course, these above examples show output according to the format used by
 :func:`~logging.basicConfig`, but you can use a different formatter when you
 configure logging.
-=======
-How to treat a logger like an output stream
--------------------------------------------
-
-Sometimes, you need to interface to a third-party API which expects a file-like
-object to write to, but you want to direct the API's output to a logger. You
-can do this using a class which wraps a logger with a file-like API.
-Here's a short script illustrating such a class:
-
-.. code-block:: python
-
-    import logging
-
-    class LoggerWriter:
-        def __init__(self, logger, level):
-            self.logger = logger
-            self.level = level
-
-        def write(self, message):
-            if message != '\n':  # avoid printing bare newlines, if you like
-                self.logger.log(self.level, message)
-
-        def flush(self):
-            # doesn't actually do anything, but might be expected of a file-like
-            # object - so optional depending on your situation
-            pass
-
-        def close(self):
-            # doesn't actually do anything, but might be expected of a file-like
-            # object - so optional depending on your situation. You might want
-            # to set a flag so that later calls to write raise an exception
-            pass
-
-    def main():
-        logging.basicConfig(level=logging.DEBUG)
-        logger = logging.getLogger('demo')
-        info_fp = LoggerWriter(logger, logging.INFO)
-        debug_fp = LoggerWriter(logger, logging.DEBUG)
-        print('An INFO message', file=info_fp)
-        print('A DEBUG message', file=debug_fp)
-
-    if __name__ == "__main__":
-        main()
-
-When this script is run, it prints
-
-.. code-block:: text
-
-    INFO:demo:An INFO message
-    DEBUG:demo:A DEBUG message
-
-You could also use ``LoggerWriter`` to redirect ``sys.stdout`` and
-``sys.stderr`` by doing something like this:
-
-.. code-block:: python
-
-    import sys
-
-    sys.stdout = LoggerWriter(logger, logging.INFO)
-    sys.stderr = LoggerWriter(logger, logging.WARNING)
-
-You should do this *after* configuring logging for your needs. In the above
-example, the :func:`~logging.basicConfig` call does this (using the
-``sys.stderr`` value *before* it is overwritten by a ``LoggerWriter``
-instance). Then, you'd get this kind of result:
-
-.. code-block:: pycon
-
-    >>> print('Foo')
-    INFO:demo:Foo
-    >>> print('Bar', file=sys.stderr)
-    WARNING:demo:Bar
-    >>>
-
-Of course, the examples above show output according to the format used by
-:func:`~logging.basicConfig`, but you can use a different formatter when you
-configure logging.
 
 .. patterns-to-avoid: