[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