[Python-checkins] python/dist/src/Doc/lib liblogging.tex,1.27,1.28

vsajip at users.sourceforge.net vsajip at users.sourceforge.net
Fri Oct 22 23:43:18 CEST 2004


Update of /cvsroot/python/python/dist/src/Doc/lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23865

Modified Files:
	liblogging.tex 
Log Message:
Added example of multiple destinations

Index: liblogging.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/lib/liblogging.tex,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- liblogging.tex	3 Oct 2004 19:10:05 -0000	1.27
+++ liblogging.tex	22 Oct 2004 21:43:15 -0000	1.28
@@ -507,15 +507,79 @@
                     datefmt='%a, %d %b %Y %H:%M:%S',
                     filename='/temp/myapp.log',
                     filemode='w')
-logging.error('Pack my box with %d dozen %s', 12, 'liquor jugs')
+logging.error('Pack my box with %d dozen %s', 5, 'liquor jugs')
 \end{verbatim}
 
 which would result in
 
 \begin{verbatim}
-Wed, 21 Jul 2004 15:35:16 ERROR    Pack my box with 12 dozen liquor jugs
+Wed, 21 Jul 2004 15:35:16 ERROR    Pack my box with 5 dozen liquor jugs
+\end{verbatim}
+
+\subsection{Logging to multiple destinations \label{multiple-destinations}}
+
+Let's say you want to log to console and file with different message formats
+and in differing circumstances. Say you want to log messages with levels
+of DEBUG and higher to file, and those messages at level INFO and higher to
+the console. Let's also assume that the file should contain timestamps, but
+the console messages should not. Here's how you can achieve this:
+
+\begin{verbatim}
+import logging
+
+#set up logging to file - see previous section for more details
+logging.basicConfig(level=logging.DEBUG,
+                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
+                    datefmt='%m-%d %H:%M',
+                    filename='/temp/myapp.log',
+                    filemode='w')
+#define a Handler which writes INFO messages or higher to the sys.stderr
+console = logging.StreamHandler()
+console.setLevel(logging.INFO)
+#set a format which is simpler for console use
+formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
+#tell the handler to use this format
+console.setFormatter(formatter)
+#add the handler to the root logger
+logging.getLogger('').addHandler(console)
+
+#Now, we can log to the root logger, or any other logger. First the root...
+logging.info('Jackdaws love my big sphinx of quartz.')
+
+#Now, define a couple of other loggers which might represent areas in your
+#application:
+
+logger1 = logging.getLogger('myapp.area1')
+logger2 = logging.getLogger('myapp.area2')
+
+logger1.debug('Quick zephyrs blow, vexing daft Jim.')
+logger1.info('How quickly daft jumping zebras vex.')
+logger2.warning('Jail zesty vixen who grabbed pay from quack.')
+logger2.error('The five boxing wizards jump quickly.')
+\end{verbatim}
+
+When you run this, on the console you will see
+
+\begin{verbatim}
+root        : INFO     Jackdaws love my big sphinx of quartz.
+myapp.area1 : INFO     How quickly daft jumping zebras vex.
+myapp.area2 : WARNING  Jail zesty vixen who grabbed pay from quack.
+myapp.area2 : ERROR    The five boxing wizards jump quickly.
 \end{verbatim}
 
+and in the file you will see something like
+
+\begin{verbatim}
+10-22 22:19 root         INFO     Jackdaws love my big sphinx of quartz.
+10-22 22:19 myapp.area1  DEBUG    Quick zephyrs blow, vexing daft Jim.
+10-22 22:19 myapp.area1  INFO     How quickly daft jumping zebras vex.
+10-22 22:19 myapp.area2  WARNING  Jail zesty vixen who grabbed pay from quack.
+10-22 22:19 myapp.area2  ERROR    The five boxing wizards jump quickly.
+\end{verbatim}
+
+As you can see, the DEBUG message only shows up in the file. The other
+messages are sent to both destinations.
+
 \subsection{Handler Objects}
 
 Handlers have the following attributes and methods. Note that



More information about the Python-checkins mailing list