Mercurial > cpython-lru_cache-weakref
annotate Doc/library/logging.rst @ 54294:dba767bc3155 legacy-trunk
remove mention of old ctypes version
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sat, 23 May 2009 20:59:09 +0000 |
| parents | d19d890138f1 |
| children | a07ea82a5bb0 |
| rev | line source |
|---|---|
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1 :mod:`logging` --- Logging facility for Python |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2 ============================================== |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
3 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
4 .. module:: logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
5 :synopsis: Flexible error logging system for applications. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
6 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
7 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
8 .. moduleauthor:: Vinay Sajip <vinay_sajip@red-dove.com> |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
9 .. sectionauthor:: Vinay Sajip <vinay_sajip@red-dove.com> |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
10 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
11 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
12 .. index:: pair: Errors; logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
13 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
14 .. versionadded:: 2.3 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
15 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
16 This module defines functions and classes which implement a flexible error |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
17 logging system for applications. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
18 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
19 Logging is performed by calling methods on instances of the :class:`Logger` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
20 class (hereafter called :dfn:`loggers`). Each instance has a name, and they are |
|
43631
03056365a1b6
Add :term:s for "new-style class".
Georg Brandl <georg@python.org>
parents:
42630
diff
changeset
|
21 conceptually arranged in a namespace hierarchy using dots (periods) as |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
22 separators. For example, a logger named "scan" is the parent of loggers |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
23 "scan.text", "scan.html" and "scan.pdf". Logger names can be anything you want, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
24 and indicate the area of an application in which a logged message originates. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
25 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
26 Logged messages also have levels of importance associated with them. The default |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
27 levels provided are :const:`DEBUG`, :const:`INFO`, :const:`WARNING`, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
28 :const:`ERROR` and :const:`CRITICAL`. As a convenience, you indicate the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
29 importance of a logged message by calling an appropriate method of |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
30 :class:`Logger`. The methods are :meth:`debug`, :meth:`info`, :meth:`warning`, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
31 :meth:`error` and :meth:`critical`, which mirror the default levels. You are not |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
32 constrained to use these levels: you can specify your own and use a more general |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
33 :class:`Logger` method, :meth:`log`, which takes an explicit level argument. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
34 |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
35 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
36 Logging tutorial |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
37 ---------------- |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
38 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
39 The key benefit of having the logging API provided by a standard library module |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
40 is that all Python modules can participate in logging, so your application log |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
41 can include messages from third-party modules. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
42 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
43 It is, of course, possible to log messages with different verbosity levels or to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
44 different destinations. Support for writing log messages to files, HTTP |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
45 GET/POST locations, email via SMTP, generic sockets, or OS-specific logging |
|
45429
853af5bbb497
A lot more typo fixes by Ori Avtalion.
Georg Brandl <georg@python.org>
parents:
44909
diff
changeset
|
46 mechanisms are all supported by the standard module. You can also create your |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
47 own log destination class if you have special requirements not met by any of the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
48 built-in classes. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
49 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
50 Simple examples |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
51 ^^^^^^^^^^^^^^^ |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
52 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
53 .. sectionauthor:: Doug Hellmann |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
54 .. (see <http://blog.doughellmann.com/2007/05/pymotw-logging.html>) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
55 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
56 Most applications are probably going to want to log to a file, so let's start |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
57 with that case. Using the :func:`basicConfig` function, we can set up the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
58 default handler so that debug messages are written to a file:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
59 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
60 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
61 LOG_FILENAME = '/tmp/logging_example.out' |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
62 logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG,) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
63 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
64 logging.debug('This message should go to the log file') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
65 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
66 And now if we open the file and look at what we have, we should find the log |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
67 message:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
68 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
69 DEBUG:root:This message should go to the log file |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
70 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
71 If you run the script repeatedly, the additional log messages are appended to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
72 the file. To create a new file each time, you can pass a filemode argument to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
73 :func:`basicConfig` with a value of ``'w'``. Rather than managing the file size |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
74 yourself, though, it is simpler to use a :class:`RotatingFileHandler`:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
75 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
76 import glob |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
77 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
78 import logging.handlers |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
79 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
80 LOG_FILENAME = '/tmp/logging_rotatingfile_example.out' |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
81 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
82 # Set up a specific logger with our desired output level |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
83 my_logger = logging.getLogger('MyLogger') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
84 my_logger.setLevel(logging.DEBUG) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
85 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
86 # Add the log message handler to the logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
87 handler = logging.handlers.RotatingFileHandler( |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
88 LOG_FILENAME, maxBytes=20, backupCount=5) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
89 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
90 my_logger.addHandler(handler) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
91 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
92 # Log some messages |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
93 for i in range(20): |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
94 my_logger.debug('i = %d' % i) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
95 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
96 # See what files are created |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
97 logfiles = glob.glob('%s*' % LOG_FILENAME) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
98 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
99 for filename in logfiles: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
100 print filename |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
101 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
102 The result should be 6 separate files, each with part of the log history for the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
103 application:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
104 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
105 /tmp/logging_rotatingfile_example.out |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
106 /tmp/logging_rotatingfile_example.out.1 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
107 /tmp/logging_rotatingfile_example.out.2 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
108 /tmp/logging_rotatingfile_example.out.3 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
109 /tmp/logging_rotatingfile_example.out.4 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
110 /tmp/logging_rotatingfile_example.out.5 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
111 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
112 The most current file is always :file:`/tmp/logging_rotatingfile_example.out`, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
113 and each time it reaches the size limit it is renamed with the suffix |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
114 ``.1``. Each of the existing backup files is renamed to increment the suffix |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
115 (``.1`` becomes ``.2``, etc.) and the ``.5`` file is erased. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
116 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
117 Obviously this example sets the log length much much too small as an extreme |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
118 example. You would want to set *maxBytes* to an appropriate value. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
119 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
120 Another useful feature of the logging API is the ability to produce different |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
121 messages at different log levels. This allows you to instrument your code with |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
122 debug messages, for example, but turning the log level down so that those debug |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
123 messages are not written for your production system. The default levels are |
|
50714
bbf464210984
Corrected minor typo and added .currentmodule directives to fix missing cross-references.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50695
diff
changeset
|
124 ``CRITICAL``, ``ERROR``, ``WARNING``, ``INFO``, ``DEBUG`` and ``NOTSET``. |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
125 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
126 The logger, handler, and log message call each specify a level. The log message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
127 is only emitted if the handler and logger are configured to emit messages of |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
128 that level or lower. For example, if a message is ``CRITICAL``, and the logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
129 is set to ``ERROR``, the message is emitted. If a message is a ``WARNING``, and |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
130 the logger is set to produce only ``ERROR``\s, the message is not emitted:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
131 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
132 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
133 import sys |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
134 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
135 LEVELS = {'debug': logging.DEBUG, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
136 'info': logging.INFO, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
137 'warning': logging.WARNING, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
138 'error': logging.ERROR, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
139 'critical': logging.CRITICAL} |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
140 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
141 if len(sys.argv) > 1: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
142 level_name = sys.argv[1] |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
143 level = LEVELS.get(level_name, logging.NOTSET) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
144 logging.basicConfig(level=level) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
145 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
146 logging.debug('This is a debug message') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
147 logging.info('This is an info message') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
148 logging.warning('This is a warning message') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
149 logging.error('This is an error message') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
150 logging.critical('This is a critical error message') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
151 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
152 Run the script with an argument like 'debug' or 'warning' to see which messages |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
153 show up at different levels:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
154 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
155 $ python logging_level_example.py debug |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
156 DEBUG:root:This is a debug message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
157 INFO:root:This is an info message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
158 WARNING:root:This is a warning message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
159 ERROR:root:This is an error message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
160 CRITICAL:root:This is a critical error message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
161 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
162 $ python logging_level_example.py info |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
163 INFO:root:This is an info message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
164 WARNING:root:This is a warning message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
165 ERROR:root:This is an error message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
166 CRITICAL:root:This is a critical error message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
167 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
168 You will notice that these log messages all have ``root`` embedded in them. The |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
169 logging module supports a hierarchy of loggers with different names. An easy |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
170 way to tell where a specific log message comes from is to use a separate logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
171 object for each of your modules. Each new logger "inherits" the configuration |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
172 of its parent, and log messages sent to a logger include the name of that |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
173 logger. Optionally, each logger can be configured differently, so that messages |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
174 from different modules are handled in different ways. Let's look at a simple |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
175 example of how to log from different modules so it is easy to trace the source |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
176 of the message:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
177 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
178 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
179 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
180 logging.basicConfig(level=logging.WARNING) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
181 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
182 logger1 = logging.getLogger('package1.module1') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
183 logger2 = logging.getLogger('package2.module2') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
184 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
185 logger1.warning('This message comes from one module') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
186 logger2.warning('And this message comes from another module') |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
187 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
188 And the output:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
189 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
190 $ python logging_modules_example.py |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
191 WARNING:package1.module1:This message comes from one module |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
192 WARNING:package2.module2:And this message comes from another module |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
193 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
194 There are many more options for configuring logging, including different log |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
195 message formatting options, having messages delivered to multiple destinations, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
196 and changing the configuration of a long-running application on the fly using a |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
197 socket interface. All of these options are covered in depth in the library |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
198 module documentation. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
199 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
200 Loggers |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
201 ^^^^^^^ |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
202 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
203 The logging library takes a modular approach and offers the several categories |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
204 of components: loggers, handlers, filters, and formatters. Loggers expose the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
205 interface that application code directly uses. Handlers send the log records to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
206 the appropriate destination. Filters provide a finer grained facility for |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
207 determining which log records to send on to a handler. Formatters specify the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
208 layout of the resultant log record. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
209 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
210 :class:`Logger` objects have a threefold job. First, they expose several |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
211 methods to application code so that applications can log messages at runtime. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
212 Second, logger objects determine which log messages to act upon based upon |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
213 severity (the default filtering facility) or filter objects. Third, logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
214 objects pass along relevant log messages to all interested log handlers. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
215 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
216 The most widely used methods on logger objects fall into two categories: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
217 configuration and message sending. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
218 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
219 * :meth:`Logger.setLevel` specifies the lowest-severity log message a logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
220 will handle, where debug is the lowest built-in severity level and critical is |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
221 the highest built-in severity. For example, if the severity level is info, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
222 the logger will handle only info, warning, error, and critical messages and |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
223 will ignore debug messages. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
224 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
225 * :meth:`Logger.addFilter` and :meth:`Logger.removeFilter` add and remove filter |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
226 objects from the logger object. This tutorial does not address filters. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
227 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
228 With the logger object configured, the following methods create log messages: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
229 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
230 * :meth:`Logger.debug`, :meth:`Logger.info`, :meth:`Logger.warning`, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
231 :meth:`Logger.error`, and :meth:`Logger.critical` all create log records with |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
232 a message and a level that corresponds to their respective method names. The |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
233 message is actually a format string, which may contain the standard string |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
234 substitution syntax of :const:`%s`, :const:`%d`, :const:`%f`, and so on. The |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
235 rest of their arguments is a list of objects that correspond with the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
236 substitution fields in the message. With regard to :const:`**kwargs`, the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
237 logging methods care only about a keyword of :const:`exc_info` and use it to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
238 determine whether to log exception information. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
239 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
240 * :meth:`Logger.exception` creates a log message similar to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
241 :meth:`Logger.error`. The difference is that :meth:`Logger.exception` dumps a |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
242 stack trace along with it. Call this method only from an exception handler. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
243 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
244 * :meth:`Logger.log` takes a log level as an explicit argument. This is a |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
245 little more verbose for logging messages than using the log level convenience |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
246 methods listed above, but this is how to log at custom log levels. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
247 |
|
45512
e57ffa2b5d07
Add minor markup for a string.
Brett Cannon <bcannon@gmail.com>
parents:
45429
diff
changeset
|
248 :func:`getLogger` returns a reference to a logger instance with the specified |
|
e57ffa2b5d07
Add minor markup for a string.
Brett Cannon <bcannon@gmail.com>
parents:
45429
diff
changeset
|
249 if it it is provided, or ``root`` if not. The names are period-separated |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
250 hierarchical structures. Multiple calls to :func:`getLogger` with the same name |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
251 will return a reference to the same logger object. Loggers that are further |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
252 down in the hierarchical list are children of loggers higher up in the list. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
253 For example, given a logger with a name of ``foo``, loggers with names of |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
254 ``foo.bar``, ``foo.bar.baz``, and ``foo.bam`` are all children of ``foo``. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
255 Child loggers propagate messages up to their parent loggers. Because of this, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
256 it is unnecessary to define and configure all the loggers an application uses. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
257 It is sufficient to configure a top-level logger and create child loggers as |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
258 needed. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
259 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
260 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
261 Handlers |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
262 ^^^^^^^^ |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
263 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
264 :class:`Handler` objects are responsible for dispatching the appropriate log |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
265 messages (based on the log messages' severity) to the handler's specified |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
266 destination. Logger objects can add zero or more handler objects to themselves |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
267 with an :func:`addHandler` method. As an example scenario, an application may |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
268 want to send all log messages to a log file, all log messages of error or higher |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
269 to stdout, and all messages of critical to an email address. This scenario |
|
45429
853af5bbb497
A lot more typo fixes by Ori Avtalion.
Georg Brandl <georg@python.org>
parents:
44909
diff
changeset
|
270 requires three individual handlers where each handler is responsible for sending |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
271 messages of a specific severity to a specific location. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
272 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
273 The standard library includes quite a few handler types; this tutorial uses only |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
274 :class:`StreamHandler` and :class:`FileHandler` in its examples. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
275 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
276 There are very few methods in a handler for application developers to concern |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
277 themselves with. The only handler methods that seem relevant for application |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
278 developers who are using the built-in handler objects (that is, not creating |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
279 custom handlers) are the following configuration methods: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
280 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
281 * The :meth:`Handler.setLevel` method, just as in logger objects, specifies the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
282 lowest severity that will be dispatched to the appropriate destination. Why |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
283 are there two :func:`setLevel` methods? The level set in the logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
284 determines which severity of messages it will pass to its handlers. The level |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
285 set in each handler determines which messages that handler will send on. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
286 :func:`setFormatter` selects a Formatter object for this handler to use. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
287 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
288 * :func:`addFilter` and :func:`removeFilter` respectively configure and |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
289 deconfigure filter objects on handlers. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
290 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
291 Application code should not directly instantiate and use handlers. Instead, the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
292 :class:`Handler` class is a base class that defines the interface that all |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
293 Handlers should have and establishes some default behavior that child classes |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
294 can use (or override). |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
295 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
296 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
297 Formatters |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
298 ^^^^^^^^^^ |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
299 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
300 Formatter objects configure the final order, structure, and contents of the log |
|
45512
e57ffa2b5d07
Add minor markup for a string.
Brett Cannon <bcannon@gmail.com>
parents:
45429
diff
changeset
|
301 message. Unlike the base :class:`logging.Handler` class, application code may |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
302 instantiate formatter classes, although you could likely subclass the formatter |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
303 if your application needs special behavior. The constructor takes two optional |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
304 arguments: a message format string and a date format string. If there is no |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
305 message format string, the default is to use the raw message. If there is no |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
306 date format string, the default date format is:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
307 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
308 %Y-%m-%d %H:%M:%S |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
309 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
310 with the milliseconds tacked on at the end. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
311 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
312 The message format string uses ``%(<dictionary key>)s`` styled string |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
313 substitution; the possible keys are documented in :ref:`formatter`. |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
314 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
315 The following message format string will log the time in a human-readable |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
316 format, the severity of the message, and the contents of the message, in that |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
317 order:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
318 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
319 "%(asctime)s - %(levelname)s - %(message)s" |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
320 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
321 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
322 Configuring Logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
323 ^^^^^^^^^^^^^^^^^^^ |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
324 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
325 Programmers can configure logging either by creating loggers, handlers, and |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
326 formatters explicitly in a main module with the configuration methods listed |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
327 above (using Python code), or by creating a logging config file. The following |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
328 code is an example of configuring a very simple logger, a console handler, and a |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
329 simple formatter in a Python module:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
330 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
331 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
332 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
333 # create logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
334 logger = logging.getLogger("simple_example") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
335 logger.setLevel(logging.DEBUG) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
336 # create console handler and set level to debug |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
337 ch = logging.StreamHandler() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
338 ch.setLevel(logging.DEBUG) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
339 # create formatter |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
340 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
341 # add formatter to ch |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
342 ch.setFormatter(formatter) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
343 # add ch to logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
344 logger.addHandler(ch) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
345 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
346 # "application" code |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
347 logger.debug("debug message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
348 logger.info("info message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
349 logger.warn("warn message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
350 logger.error("error message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
351 logger.critical("critical message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
352 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
353 Running this module from the command line produces the following output:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
354 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
355 $ python simple_logging_module.py |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
356 2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
357 2005-03-19 15:10:26,620 - simple_example - INFO - info message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
358 2005-03-19 15:10:26,695 - simple_example - WARNING - warn message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
359 2005-03-19 15:10:26,697 - simple_example - ERROR - error message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
360 2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
361 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
362 The following Python module creates a logger, handler, and formatter nearly |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
363 identical to those in the example listed above, with the only difference being |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
364 the names of the objects:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
365 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
366 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
367 import logging.config |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
368 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
369 logging.config.fileConfig("logging.conf") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
370 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
371 # create logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
372 logger = logging.getLogger("simpleExample") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
373 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
374 # "application" code |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
375 logger.debug("debug message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
376 logger.info("info message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
377 logger.warn("warn message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
378 logger.error("error message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
379 logger.critical("critical message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
380 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
381 Here is the logging.conf file:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
382 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
383 [loggers] |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
384 keys=root,simpleExample |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
385 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
386 [handlers] |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
387 keys=consoleHandler |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
388 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
389 [formatters] |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
390 keys=simpleFormatter |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
391 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
392 [logger_root] |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
393 level=DEBUG |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
394 handlers=consoleHandler |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
395 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
396 [logger_simpleExample] |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
397 level=DEBUG |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
398 handlers=consoleHandler |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
399 qualname=simpleExample |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
400 propagate=0 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
401 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
402 [handler_consoleHandler] |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
403 class=StreamHandler |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
404 level=DEBUG |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
405 formatter=simpleFormatter |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
406 args=(sys.stdout,) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
407 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
408 [formatter_simpleFormatter] |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
409 format=%(asctime)s - %(name)s - %(levelname)s - %(message)s |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
410 datefmt= |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
411 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
412 The output is nearly identical to that of the non-config-file-based example:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
413 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
414 $ python simple_logging_config.py |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
415 2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
416 2005-03-19 15:38:55,979 - simpleExample - INFO - info message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
417 2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
418 2005-03-19 15:38:56,055 - simpleExample - ERROR - error message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
419 2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
420 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
421 You can see that the config file approach has a few advantages over the Python |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
422 code approach, mainly separation of configuration and code and the ability of |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
423 noncoders to easily modify the logging properties. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
424 |
|
50694
dbe39ebd3025
Minor documentation changes cross-referencing NullHandler to the documentation on configuring logging in a library.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50455
diff
changeset
|
425 .. _library-config: |
|
dbe39ebd3025
Minor documentation changes cross-referencing NullHandler to the documentation on configuring logging in a library.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50455
diff
changeset
|
426 |
|
48927
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
427 Configuring Logging for a Library |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
428 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
429 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
430 When developing a library which uses logging, some consideration needs to be |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
431 given to its configuration. If the using application does not use logging, and |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
432 library code makes logging calls, then a one-off message "No handlers could be |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
433 found for logger X.Y.Z" is printed to the console. This message is intended |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
434 to catch mistakes in logging configuration, but will confuse an application |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
435 developer who is not aware of logging by the library. |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
436 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
437 In addition to documenting how a library uses logging, a good way to configure |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
438 library logging so that it does not cause a spurious message is to add a |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
439 handler which does nothing. This avoids the message being printed, since a |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
440 handler will be found: it just doesn't produce any output. If the library user |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
441 configures logging for application use, presumably that configuration will add |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
442 some handlers, and if levels are suitably configured then logging calls made |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
443 in library code will send output to those handlers, as normal. |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
444 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
445 A do-nothing handler can be simply defined as follows:: |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
446 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
447 import logging |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
448 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
449 class NullHandler(logging.Handler): |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
450 def emit(self, record): |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
451 pass |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
452 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
453 An instance of this handler should be added to the top-level logger of the |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
454 logging namespace used by the library. If all logging by a library *foo* is |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
455 done using loggers with names matching "foo.x.y", then the code:: |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
456 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
457 import logging |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
458 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
459 h = NullHandler() |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
460 logging.getLogger("foo").addHandler(h) |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
461 |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
462 should have the desired effect. If an organisation produces a number of |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
463 libraries, then the logger name specified can be "orgname.foo" rather than |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
464 just "foo". |
|
519e0475991f
Added section about configuring logging in a library. Thanks to Thomas Heller for the idea.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48011
diff
changeset
|
465 |
|
49955
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
466 .. versionadded:: 2.7 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
467 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
468 The :class:`NullHandler` class was not present in previous versions, but is now |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
469 included, so that it need not be defined in library code. |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
470 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
471 |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
472 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
473 Logging Levels |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
474 -------------- |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
475 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
476 The numeric values of logging levels are given in the following table. These are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
477 primarily of interest if you want to define your own levels, and need them to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
478 have specific values relative to the predefined levels. If you define a level |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
479 with the same numeric value, it overwrites the predefined value; the predefined |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
480 name is lost. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
481 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
482 +--------------+---------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
483 | Level | Numeric value | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
484 +==============+===============+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
485 | ``CRITICAL`` | 50 | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
486 +--------------+---------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
487 | ``ERROR`` | 40 | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
488 +--------------+---------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
489 | ``WARNING`` | 30 | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
490 +--------------+---------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
491 | ``INFO`` | 20 | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
492 +--------------+---------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
493 | ``DEBUG`` | 10 | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
494 +--------------+---------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
495 | ``NOTSET`` | 0 | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
496 +--------------+---------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
497 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
498 Levels can also be associated with loggers, being set either by the developer or |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
499 through loading a saved logging configuration. When a logging method is called |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
500 on a logger, the logger compares its own level with the level associated with |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
501 the method call. If the logger's level is higher than the method call's, no |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
502 logging message is actually generated. This is the basic mechanism controlling |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
503 the verbosity of logging output. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
504 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
505 Logging messages are encoded as instances of the :class:`LogRecord` class. When |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
506 a logger decides to actually log an event, a :class:`LogRecord` instance is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
507 created from the logging message. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
508 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
509 Logging messages are subjected to a dispatch mechanism through the use of |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
510 :dfn:`handlers`, which are instances of subclasses of the :class:`Handler` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
511 class. Handlers are responsible for ensuring that a logged message (in the form |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
512 of a :class:`LogRecord`) ends up in a particular location (or set of locations) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
513 which is useful for the target audience for that message (such as end users, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
514 support desk staff, system administrators, developers). Handlers are passed |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
515 :class:`LogRecord` instances intended for particular destinations. Each logger |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
516 can have zero, one or more handlers associated with it (via the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
517 :meth:`addHandler` method of :class:`Logger`). In addition to any handlers |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
518 directly associated with a logger, *all handlers associated with all ancestors |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
519 of the logger* are called to dispatch the message. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
520 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
521 Just as for loggers, handlers can have levels associated with them. A handler's |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
522 level acts as a filter in the same way as a logger's level does. If a handler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
523 decides to actually dispatch an event, the :meth:`emit` method is used to send |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
524 the message to its destination. Most user-defined subclasses of :class:`Handler` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
525 will need to override this :meth:`emit`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
526 |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
527 Useful Handlers |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
528 --------------- |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
529 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
530 In addition to the base :class:`Handler` class, many useful subclasses are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
531 provided: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
532 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
533 #. :ref:`stream-handler` instances send error messages to streams (file-like |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
534 objects). |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
535 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
536 #. :ref:`file-handler` instances send error messages to disk files. |
|
50808
2680a4beaea1
Minor changes/corrections in markup.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50807
diff
changeset
|
537 |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
538 #. :class:`BaseRotatingHandler` is the base class for handlers that |
|
50750
bc92bb20819f
Minor changes/corrections in markup.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50714
diff
changeset
|
539 rotate log files at a certain point. It is not meant to be instantiated |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
540 directly. Instead, use :ref:`rotating-file-handler` or |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
541 :ref:`timed-rotating-file-handler`. |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
542 |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
543 #. :ref:`rotating-file-handler` instances send error messages to disk |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
544 files, with support for maximum log file sizes and log file rotation. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
545 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
546 #. :ref:`timed-rotating-file-handler` instances send error messages to |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
547 disk files, rotating the log file at certain timed intervals. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
548 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
549 #. :ref:`socket-handler` instances send error messages to TCP/IP |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
550 sockets. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
551 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
552 #. :ref:`datagram-handler` instances send error messages to UDP |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
553 sockets. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
554 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
555 #. :ref:`smtp-handler` instances send error messages to a designated |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
556 email address. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
557 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
558 #. :ref:`syslog-handler` instances send error messages to a Unix |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
559 syslog daemon, possibly on a remote machine. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
560 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
561 #. :ref:`nt-eventlog-handler` instances send error messages to a |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
562 Windows NT/2000/XP event log. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
563 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
564 #. :ref:`memory-handler` instances send error messages to a buffer |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
565 in memory, which is flushed whenever specific criteria are met. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
566 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
567 #. :ref:`http-handler` instances send error messages to an HTTP |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
568 server using either ``GET`` or ``POST`` semantics. |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
569 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
570 #. :ref:`watched-file-handler` instances watch the file they are |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
571 logging to. If the file changes, it is closed and reopened using the file |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
572 name. This handler is only useful on Unix-like systems; Windows does not |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
573 support the underlying mechanism used. |
|
50714
bbf464210984
Corrected minor typo and added .currentmodule directives to fix missing cross-references.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50695
diff
changeset
|
574 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
575 #. :ref:`null-handler` instances do nothing with error messages. They are used |
|
49955
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
576 by library developers who want to use logging, but want to avoid the "No |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
577 handlers could be found for logger XXX" message which can be displayed if |
|
50694
dbe39ebd3025
Minor documentation changes cross-referencing NullHandler to the documentation on configuring logging in a library.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50455
diff
changeset
|
578 the library user has not configured logging. See :ref:`library-config` for |
|
dbe39ebd3025
Minor documentation changes cross-referencing NullHandler to the documentation on configuring logging in a library.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50455
diff
changeset
|
579 more information. |
|
49955
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
580 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
581 .. versionadded:: 2.7 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
582 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
583 The :class:`NullHandler` class was not present in previous versions. |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48934
diff
changeset
|
584 |
|
50371
f73fc441744f
Minor documentation change relating to NullHandler.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49955
diff
changeset
|
585 The :class:`NullHandler`, :class:`StreamHandler` and :class:`FileHandler` |
|
f73fc441744f
Minor documentation change relating to NullHandler.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49955
diff
changeset
|
586 classes are defined in the core logging package. The other handlers are |
|
f73fc441744f
Minor documentation change relating to NullHandler.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49955
diff
changeset
|
587 defined in a sub- module, :mod:`logging.handlers`. (There is also another |
|
f73fc441744f
Minor documentation change relating to NullHandler.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49955
diff
changeset
|
588 sub-module, :mod:`logging.config`, for configuration functionality.) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
589 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
590 Logged messages are formatted for presentation through instances of the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
591 :class:`Formatter` class. They are initialized with a format string suitable for |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
592 use with the % operator and a dictionary. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
593 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
594 For formatting multiple messages in a batch, instances of |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
595 :class:`BufferingFormatter` can be used. In addition to the format string (which |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
596 is applied to each message in the batch), there is provision for header and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
597 trailer format strings. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
598 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
599 When filtering based on logger level and/or handler level is not enough, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
600 instances of :class:`Filter` can be added to both :class:`Logger` and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
601 :class:`Handler` instances (through their :meth:`addFilter` method). Before |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
602 deciding to process a message further, both loggers and handlers consult all |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
603 their filters for permission. If any filter returns a false value, the message |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
604 is not processed further. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
605 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
606 The basic :class:`Filter` functionality allows filtering by specific logger |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
607 name. If this feature is used, messages sent to the named logger and its |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
608 children are allowed through the filter, and all others dropped. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
609 |
|
50807
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
610 Module-Level Functions |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
611 ---------------------- |
|
884cd3f19b20
Made minor changes/corrections in markup. Added a couple of section headings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50750
diff
changeset
|
612 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
613 In addition to the classes described above, there are a number of module- level |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
614 functions. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
615 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
616 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
617 .. function:: getLogger([name]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
618 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
619 Return a logger with the specified name or, if no name is specified, return a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
620 logger which is the root logger of the hierarchy. If specified, the name is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
621 typically a dot-separated hierarchical name like *"a"*, *"a.b"* or *"a.b.c.d"*. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
622 Choice of these names is entirely up to the developer who is using logging. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
623 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
624 All calls to this function with a given name return the same logger instance. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
625 This means that logger instances never need to be passed between different parts |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
626 of an application. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
627 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
628 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
629 .. function:: getLoggerClass() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
630 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
631 Return either the standard :class:`Logger` class, or the last class passed to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
632 :func:`setLoggerClass`. This function may be called from within a new class |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
633 definition, to ensure that installing a customised :class:`Logger` class will |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
634 not undo customisations already applied by other code. For example:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
635 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
636 class MyLogger(logging.getLoggerClass()): |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
637 # ... override behaviour here |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
638 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
639 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
640 .. function:: debug(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
641 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
642 Logs a message with level :const:`DEBUG` on the root logger. The *msg* is the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
643 message format string, and the *args* are the arguments which are merged into |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
644 *msg* using the string formatting operator. (Note that this means that you can |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
645 use keywords in the format string, together with a single dictionary argument.) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
646 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
647 There are two keyword arguments in *kwargs* which are inspected: *exc_info* |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
648 which, if it does not evaluate as false, causes exception information to be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
649 added to the logging message. If an exception tuple (in the format returned by |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
650 :func:`sys.exc_info`) is provided, it is used; otherwise, :func:`sys.exc_info` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
651 is called to get the exception information. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
652 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
653 The other optional keyword argument is *extra* which can be used to pass a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
654 dictionary which is used to populate the __dict__ of the LogRecord created for |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
655 the logging event with user-defined attributes. These custom attributes can then |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
656 be used as you like. For example, they could be incorporated into logged |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
657 messages. For example:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
658 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
659 FORMAT = "%(asctime)-15s %(clientip)s %(user)-8s %(message)s" |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
660 logging.basicConfig(format=FORMAT) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
661 d = {'clientip': '192.168.0.1', 'user': 'fbloggs'} |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
662 logging.warning("Protocol problem: %s", "connection reset", extra=d) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
663 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
664 would print something like :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
665 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
666 2006-02-08 22:20:02,165 192.168.0.1 fbloggs Protocol problem: connection reset |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
667 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
668 The keys in the dictionary passed in *extra* should not clash with the keys used |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
669 by the logging system. (See the :class:`Formatter` documentation for more |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
670 information on which keys are used by the logging system.) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
671 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
672 If you choose to use these attributes in logged messages, you need to exercise |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
673 some care. In the above example, for instance, the :class:`Formatter` has been |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
674 set up with a format string which expects 'clientip' and 'user' in the attribute |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
675 dictionary of the LogRecord. If these are missing, the message will not be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
676 logged because a string formatting exception will occur. So in this case, you |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
677 always need to pass the *extra* dictionary with these keys. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
678 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
679 While this might be annoying, this feature is intended for use in specialized |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
680 circumstances, such as multi-threaded servers where the same code executes in |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
681 many contexts, and interesting conditions which arise are dependent on this |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
682 context (such as remote client IP address and authenticated user name, in the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
683 above example). In such circumstances, it is likely that specialized |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
684 :class:`Formatter`\ s would be used with particular :class:`Handler`\ s. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
685 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
686 .. versionchanged:: 2.5 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
687 *extra* was added. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
688 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
689 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
690 .. function:: info(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
691 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
692 Logs a message with level :const:`INFO` on the root logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
693 interpreted as for :func:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
694 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
695 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
696 .. function:: warning(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
697 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
698 Logs a message with level :const:`WARNING` on the root logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
699 interpreted as for :func:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
700 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
701 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
702 .. function:: error(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
703 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
704 Logs a message with level :const:`ERROR` on the root logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
705 interpreted as for :func:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
706 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
707 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
708 .. function:: critical(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
709 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
710 Logs a message with level :const:`CRITICAL` on the root logger. The arguments |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
711 are interpreted as for :func:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
712 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
713 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
714 .. function:: exception(msg[, *args]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
715 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
716 Logs a message with level :const:`ERROR` on the root logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
717 interpreted as for :func:`debug`. Exception info is added to the logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
718 message. This function should only be called from an exception handler. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
719 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
720 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
721 .. function:: log(level, msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
722 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
723 Logs a message with level *level* on the root logger. The other arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
724 interpreted as for :func:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
725 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
726 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
727 .. function:: disable(lvl) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
728 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
729 Provides an overriding level *lvl* for all loggers which takes precedence over |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
730 the logger's own level. When the need arises to temporarily throttle logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
731 output down across the whole application, this function can be useful. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
732 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
733 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
734 .. function:: addLevelName(lvl, levelName) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
735 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
736 Associates level *lvl* with text *levelName* in an internal dictionary, which is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
737 used to map numeric levels to a textual representation, for example when a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
738 :class:`Formatter` formats a message. This function can also be used to define |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
739 your own levels. The only constraints are that all levels used must be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
740 registered using this function, levels should be positive integers and they |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
741 should increase in increasing order of severity. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
742 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
743 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
744 .. function:: getLevelName(lvl) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
745 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
746 Returns the textual representation of logging level *lvl*. If the level is one |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
747 of the predefined levels :const:`CRITICAL`, :const:`ERROR`, :const:`WARNING`, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
748 :const:`INFO` or :const:`DEBUG` then you get the corresponding string. If you |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
749 have associated levels with names using :func:`addLevelName` then the name you |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
750 have associated with *lvl* is returned. If a numeric value corresponding to one |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
751 of the defined levels is passed in, the corresponding string representation is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
752 returned. Otherwise, the string "Level %s" % lvl is returned. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
753 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
754 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
755 .. function:: makeLogRecord(attrdict) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
756 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
757 Creates and returns a new :class:`LogRecord` instance whose attributes are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
758 defined by *attrdict*. This function is useful for taking a pickled |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
759 :class:`LogRecord` attribute dictionary, sent over a socket, and reconstituting |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
760 it as a :class:`LogRecord` instance at the receiving end. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
761 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
762 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
763 .. function:: basicConfig([**kwargs]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
764 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
765 Does basic configuration for the logging system by creating a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
766 :class:`StreamHandler` with a default :class:`Formatter` and adding it to the |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
767 root logger. The function does nothing if any handlers have been defined for |
|
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
768 the root logger. The functions :func:`debug`, :func:`info`, :func:`warning`, |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
769 :func:`error` and :func:`critical` will call :func:`basicConfig` automatically |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
770 if no handlers are defined for the root logger. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
771 |
|
46783
84af0cfa7b81
Add a sentence to basicConfig() that is in the docstring.
Georg Brandl <georg@python.org>
parents:
46555
diff
changeset
|
772 This function does nothing if the root logger already has handlers configured. |
|
84af0cfa7b81
Add a sentence to basicConfig() that is in the docstring.
Georg Brandl <georg@python.org>
parents:
46555
diff
changeset
|
773 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
774 .. versionchanged:: 2.4 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
775 Formerly, :func:`basicConfig` did not take any keyword arguments. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
776 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
777 The following keyword arguments are supported. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
778 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
779 +--------------+---------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
780 | Format | Description | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
781 +==============+=============================================+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
782 | ``filename`` | Specifies that a FileHandler be created, | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
783 | | using the specified filename, rather than a | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
784 | | StreamHandler. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
785 +--------------+---------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
786 | ``filemode`` | Specifies the mode to open the file, if | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
787 | | filename is specified (if filemode is | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
788 | | unspecified, it defaults to 'a'). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
789 +--------------+---------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
790 | ``format`` | Use the specified format string for the | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
791 | | handler. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
792 +--------------+---------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
793 | ``datefmt`` | Use the specified date/time format. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
794 +--------------+---------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
795 | ``level`` | Set the root logger level to the specified | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
796 | | level. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
797 +--------------+---------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
798 | ``stream`` | Use the specified stream to initialize the | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
799 | | StreamHandler. Note that this argument is | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
800 | | incompatible with 'filename' - if both are | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
801 | | present, 'stream' is ignored. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
802 +--------------+---------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
803 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
804 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
805 .. function:: shutdown() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
806 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
807 Informs the logging system to perform an orderly shutdown by flushing and |
|
45783
79dea65332f8
Clarified documentation on use of shutdown().
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
45611
diff
changeset
|
808 closing all handlers. This should be called at application exit and no |
|
79dea65332f8
Clarified documentation on use of shutdown().
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
45611
diff
changeset
|
809 further use of the logging system should be made after this call. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
810 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
811 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
812 .. function:: setLoggerClass(klass) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
813 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
814 Tells the logging system to use the class *klass* when instantiating a logger. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
815 The class should define :meth:`__init__` such that only a name argument is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
816 required, and the :meth:`__init__` should call :meth:`Logger.__init__`. This |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
817 function is typically called before any loggers are instantiated by applications |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
818 which need to use custom logger behavior. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
819 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
820 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
821 .. seealso:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
822 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
823 :pep:`282` - A Logging System |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
824 The proposal which described this feature for inclusion in the Python standard |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
825 library. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
826 |
| 44195 | 827 `Original Python logging package <http://www.red-dove.com/python_logging.html>`_ |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
828 This is the original source for the :mod:`logging` package. The version of the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
829 package available from this site is suitable for use with Python 1.5.2, 2.1.x |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
830 and 2.2.x, which do not include the :mod:`logging` package in the standard |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
831 library. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
832 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
833 .. _logger: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
834 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
835 Logger Objects |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
836 -------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
837 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
838 Loggers have the following attributes and methods. Note that Loggers are never |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
839 instantiated directly, but always through the module-level function |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
840 ``logging.getLogger(name)``. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
841 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
842 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
843 .. attribute:: Logger.propagate |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
844 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
845 If this evaluates to false, logging messages are not passed by this logger or by |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
846 child loggers to higher level (ancestor) loggers. The constructor sets this |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
847 attribute to 1. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
848 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
849 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
850 .. method:: Logger.setLevel(lvl) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
851 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
852 Sets the threshold for this logger to *lvl*. Logging messages which are less |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
853 severe than *lvl* will be ignored. When a logger is created, the level is set to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
854 :const:`NOTSET` (which causes all messages to be processed when the logger is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
855 the root logger, or delegation to the parent when the logger is a non-root |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
856 logger). Note that the root logger is created with level :const:`WARNING`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
857 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
858 The term "delegation to the parent" means that if a logger has a level of |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
859 NOTSET, its chain of ancestor loggers is traversed until either an ancestor with |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
860 a level other than NOTSET is found, or the root is reached. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
861 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
862 If an ancestor is found with a level other than NOTSET, then that ancestor's |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
863 level is treated as the effective level of the logger where the ancestor search |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
864 began, and is used to determine how a logging event is handled. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
865 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
866 If the root is reached, and it has a level of NOTSET, then all messages will be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
867 processed. Otherwise, the root's level will be used as the effective level. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
868 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
869 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
870 .. method:: Logger.isEnabledFor(lvl) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
871 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
872 Indicates if a message of severity *lvl* would be processed by this logger. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
873 This method checks first the module-level level set by |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
874 ``logging.disable(lvl)`` and then the logger's effective level as determined |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
875 by :meth:`getEffectiveLevel`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
876 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
877 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
878 .. method:: Logger.getEffectiveLevel() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
879 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
880 Indicates the effective level for this logger. If a value other than |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
881 :const:`NOTSET` has been set using :meth:`setLevel`, it is returned. Otherwise, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
882 the hierarchy is traversed towards the root until a value other than |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
883 :const:`NOTSET` is found, and that value is returned. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
884 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
885 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
886 .. method:: Logger.debug(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
887 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
888 Logs a message with level :const:`DEBUG` on this logger. The *msg* is the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
889 message format string, and the *args* are the arguments which are merged into |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
890 *msg* using the string formatting operator. (Note that this means that you can |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
891 use keywords in the format string, together with a single dictionary argument.) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
892 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
893 There are two keyword arguments in *kwargs* which are inspected: *exc_info* |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
894 which, if it does not evaluate as false, causes exception information to be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
895 added to the logging message. If an exception tuple (in the format returned by |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
896 :func:`sys.exc_info`) is provided, it is used; otherwise, :func:`sys.exc_info` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
897 is called to get the exception information. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
898 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
899 The other optional keyword argument is *extra* which can be used to pass a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
900 dictionary which is used to populate the __dict__ of the LogRecord created for |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
901 the logging event with user-defined attributes. These custom attributes can then |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
902 be used as you like. For example, they could be incorporated into logged |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
903 messages. For example:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
904 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
905 FORMAT = "%(asctime)-15s %(clientip)s %(user)-8s %(message)s" |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
906 logging.basicConfig(format=FORMAT) |
|
43643
eb908a19c05a
Bug #1313, fix typo (wrong variable name) in example.
Neal Norwitz <nnorwitz@gmail.com>
parents:
43631
diff
changeset
|
907 d = { 'clientip' : '192.168.0.1', 'user' : 'fbloggs' } |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
908 logger = logging.getLogger("tcpserver") |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
909 logger.warning("Protocol problem: %s", "connection reset", extra=d) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
910 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
911 would print something like :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
912 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
913 2006-02-08 22:20:02,165 192.168.0.1 fbloggs Protocol problem: connection reset |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
914 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
915 The keys in the dictionary passed in *extra* should not clash with the keys used |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
916 by the logging system. (See the :class:`Formatter` documentation for more |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
917 information on which keys are used by the logging system.) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
918 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
919 If you choose to use these attributes in logged messages, you need to exercise |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
920 some care. In the above example, for instance, the :class:`Formatter` has been |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
921 set up with a format string which expects 'clientip' and 'user' in the attribute |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
922 dictionary of the LogRecord. If these are missing, the message will not be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
923 logged because a string formatting exception will occur. So in this case, you |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
924 always need to pass the *extra* dictionary with these keys. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
925 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
926 While this might be annoying, this feature is intended for use in specialized |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
927 circumstances, such as multi-threaded servers where the same code executes in |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
928 many contexts, and interesting conditions which arise are dependent on this |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
929 context (such as remote client IP address and authenticated user name, in the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
930 above example). In such circumstances, it is likely that specialized |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
931 :class:`Formatter`\ s would be used with particular :class:`Handler`\ s. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
932 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
933 .. versionchanged:: 2.5 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
934 *extra* was added. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
935 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
936 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
937 .. method:: Logger.info(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
938 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
939 Logs a message with level :const:`INFO` on this logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
940 interpreted as for :meth:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
941 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
942 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
943 .. method:: Logger.warning(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
944 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
945 Logs a message with level :const:`WARNING` on this logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
946 interpreted as for :meth:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
947 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
948 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
949 .. method:: Logger.error(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
950 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
951 Logs a message with level :const:`ERROR` on this logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
952 interpreted as for :meth:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
953 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
954 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
955 .. method:: Logger.critical(msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
956 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
957 Logs a message with level :const:`CRITICAL` on this logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
958 interpreted as for :meth:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
959 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
960 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
961 .. method:: Logger.log(lvl, msg[, *args[, **kwargs]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
962 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
963 Logs a message with integer level *lvl* on this logger. The other arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
964 interpreted as for :meth:`debug`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
965 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
966 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
967 .. method:: Logger.exception(msg[, *args]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
968 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
969 Logs a message with level :const:`ERROR` on this logger. The arguments are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
970 interpreted as for :meth:`debug`. Exception info is added to the logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
971 message. This method should only be called from an exception handler. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
972 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
973 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
974 .. method:: Logger.addFilter(filt) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
975 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
976 Adds the specified filter *filt* to this logger. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
977 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
978 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
979 .. method:: Logger.removeFilter(filt) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
980 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
981 Removes the specified filter *filt* from this logger. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
982 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
983 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
984 .. method:: Logger.filter(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
985 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
986 Applies this logger's filters to the record and returns a true value if the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
987 record is to be processed. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
988 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
989 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
990 .. method:: Logger.addHandler(hdlr) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
991 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
992 Adds the specified handler *hdlr* to this logger. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
993 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
994 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
995 .. method:: Logger.removeHandler(hdlr) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
996 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
997 Removes the specified handler *hdlr* from this logger. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
998 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
999 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1000 .. method:: Logger.findCaller() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1001 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1002 Finds the caller's source filename and line number. Returns the filename, line |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1003 number and function name as a 3-element tuple. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1004 |
|
42630
20aec9f34598
Manually patched a few things that didn't get merged in, but should.
Guido van Rossum <guido@python.org>
parents:
42604
diff
changeset
|
1005 .. versionchanged:: 2.4 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1006 The function name was added. In earlier versions, the filename and line number |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1007 were returned as a 2-element tuple.. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1008 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1009 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1010 .. method:: Logger.handle(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1011 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1012 Handles a record by passing it to all handlers associated with this logger and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1013 its ancestors (until a false value of *propagate* is found). This method is used |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1014 for unpickled records received from a socket, as well as those created locally. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1015 Logger-level filtering is applied using :meth:`filter`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1016 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1017 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1018 .. method:: Logger.makeRecord(name, lvl, fn, lno, msg, args, exc_info [, func, extra]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1019 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1020 This is a factory method which can be overridden in subclasses to create |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1021 specialized :class:`LogRecord` instances. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1022 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1023 .. versionchanged:: 2.5 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1024 *func* and *extra* were added. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1025 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1026 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1027 .. _minimal-example: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1028 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1029 Basic example |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1030 ------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1031 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1032 .. versionchanged:: 2.4 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1033 formerly :func:`basicConfig` did not take any keyword arguments. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1034 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1035 The :mod:`logging` package provides a lot of flexibility, and its configuration |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1036 can appear daunting. This section demonstrates that simple use of the logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1037 package is possible. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1038 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1039 The simplest example shows logging to the console:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1040 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1041 import logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1042 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1043 logging.debug('A debug message') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1044 logging.info('Some information') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1045 logging.warning('A shot across the bows') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1046 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1047 If you run the above script, you'll see this:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1048 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1049 WARNING:root:A shot across the bows |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1050 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1051 Because no particular logger was specified, the system used the root logger. The |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1052 debug and info messages didn't appear because by default, the root logger is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1053 configured to only handle messages with a severity of WARNING or above. The |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1054 message format is also a configuration default, as is the output destination of |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1055 the messages - ``sys.stderr``. The severity level, the message format and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1056 destination can be easily changed, as shown in the example below:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1057 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1058 import logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1059 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1060 logging.basicConfig(level=logging.DEBUG, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1061 format='%(asctime)s %(levelname)s %(message)s', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1062 filename='/tmp/myapp.log', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1063 filemode='w') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1064 logging.debug('A debug message') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1065 logging.info('Some information') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1066 logging.warning('A shot across the bows') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1067 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1068 The :meth:`basicConfig` method is used to change the configuration defaults, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1069 which results in output (written to ``/tmp/myapp.log``) which should look |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1070 something like the following:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1071 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1072 2004-07-02 13:00:08,743 DEBUG A debug message |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1073 2004-07-02 13:00:08,743 INFO Some information |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1074 2004-07-02 13:00:08,743 WARNING A shot across the bows |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1075 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1076 This time, all messages with a severity of DEBUG or above were handled, and the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1077 format of the messages was also changed, and output went to the specified file |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1078 rather than the console. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1079 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1080 Formatting uses standard Python string formatting - see section |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1081 :ref:`string-formatting`. The format string takes the following common |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1082 specifiers. For a complete list of specifiers, consult the :class:`Formatter` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1083 documentation. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1084 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1085 +-------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1086 | Format | Description | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1087 +===================+===============================================+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1088 | ``%(name)s`` | Name of the logger (logging channel). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1089 +-------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1090 | ``%(levelname)s`` | Text logging level for the message | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1091 | | (``'DEBUG'``, ``'INFO'``, ``'WARNING'``, | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1092 | | ``'ERROR'``, ``'CRITICAL'``). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1093 +-------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1094 | ``%(asctime)s`` | Human-readable time when the | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1095 | | :class:`LogRecord` was created. By default | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1096 | | this is of the form "2003-07-08 16:49:45,896" | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1097 | | (the numbers after the comma are millisecond | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1098 | | portion of the time). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1099 +-------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1100 | ``%(message)s`` | The logged message. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1101 +-------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1102 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1103 To change the date/time format, you can pass an additional keyword parameter, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1104 *datefmt*, as in the following:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1105 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1106 import logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1107 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1108 logging.basicConfig(level=logging.DEBUG, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1109 format='%(asctime)s %(levelname)-8s %(message)s', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1110 datefmt='%a, %d %b %Y %H:%M:%S', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1111 filename='/temp/myapp.log', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1112 filemode='w') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1113 logging.debug('A debug message') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1114 logging.info('Some information') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1115 logging.warning('A shot across the bows') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1116 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1117 which would result in output like :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1118 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1119 Fri, 02 Jul 2004 13:06:18 DEBUG A debug message |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1120 Fri, 02 Jul 2004 13:06:18 INFO Some information |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1121 Fri, 02 Jul 2004 13:06:18 WARNING A shot across the bows |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1122 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1123 The date format string follows the requirements of :func:`strftime` - see the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1124 documentation for the :mod:`time` module. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1125 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1126 If, instead of sending logging output to the console or a file, you'd rather use |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1127 a file-like object which you have created separately, you can pass it to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1128 :func:`basicConfig` using the *stream* keyword argument. Note that if both |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1129 *stream* and *filename* keyword arguments are passed, the *stream* argument is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1130 ignored. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1131 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1132 Of course, you can put variable information in your output. To do this, simply |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1133 have the message be a format string and pass in additional arguments containing |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1134 the variable information, as in the following example:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1135 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1136 import logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1137 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1138 logging.basicConfig(level=logging.DEBUG, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1139 format='%(asctime)s %(levelname)-8s %(message)s', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1140 datefmt='%a, %d %b %Y %H:%M:%S', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1141 filename='/temp/myapp.log', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1142 filemode='w') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1143 logging.error('Pack my box with %d dozen %s', 5, 'liquor jugs') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1144 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1145 which would result in :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1146 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1147 Wed, 21 Jul 2004 15:35:16 ERROR Pack my box with 5 dozen liquor jugs |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1148 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1149 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1150 .. _multiple-destinations: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1151 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1152 Logging to multiple destinations |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1153 -------------------------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1154 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1155 Let's say you want to log to console and file with different message formats and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1156 in differing circumstances. Say you want to log messages with levels of DEBUG |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1157 and higher to file, and those messages at level INFO and higher to the console. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1158 Let's also assume that the file should contain timestamps, but the console |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1159 messages should not. Here's how you can achieve this:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1160 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1161 import logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1162 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1163 # set up logging to file - see previous section for more details |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1164 logging.basicConfig(level=logging.DEBUG, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1165 format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1166 datefmt='%m-%d %H:%M', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1167 filename='/temp/myapp.log', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1168 filemode='w') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1169 # define a Handler which writes INFO messages or higher to the sys.stderr |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1170 console = logging.StreamHandler() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1171 console.setLevel(logging.INFO) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1172 # set a format which is simpler for console use |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1173 formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1174 # tell the handler to use this format |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1175 console.setFormatter(formatter) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1176 # add the handler to the root logger |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1177 logging.getLogger('').addHandler(console) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1178 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1179 # Now, we can log to the root logger, or any other logger. First the root... |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1180 logging.info('Jackdaws love my big sphinx of quartz.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1181 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1182 # Now, define a couple of other loggers which might represent areas in your |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1183 # application: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1184 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1185 logger1 = logging.getLogger('myapp.area1') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1186 logger2 = logging.getLogger('myapp.area2') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1187 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1188 logger1.debug('Quick zephyrs blow, vexing daft Jim.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1189 logger1.info('How quickly daft jumping zebras vex.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1190 logger2.warning('Jail zesty vixen who grabbed pay from quack.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1191 logger2.error('The five boxing wizards jump quickly.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1192 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1193 When you run this, on the console you will see :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1194 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1195 root : INFO Jackdaws love my big sphinx of quartz. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1196 myapp.area1 : INFO How quickly daft jumping zebras vex. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1197 myapp.area2 : WARNING Jail zesty vixen who grabbed pay from quack. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1198 myapp.area2 : ERROR The five boxing wizards jump quickly. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1199 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1200 and in the file you will see something like :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1201 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1202 10-22 22:19 root INFO Jackdaws love my big sphinx of quartz. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1203 10-22 22:19 myapp.area1 DEBUG Quick zephyrs blow, vexing daft Jim. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1204 10-22 22:19 myapp.area1 INFO How quickly daft jumping zebras vex. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1205 10-22 22:19 myapp.area2 WARNING Jail zesty vixen who grabbed pay from quack. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1206 10-22 22:19 myapp.area2 ERROR The five boxing wizards jump quickly. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1207 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1208 As you can see, the DEBUG message only shows up in the file. The other messages |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1209 are sent to both destinations. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1210 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1211 This example uses console and file handlers, but you can use any number and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1212 combination of handlers you choose. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1213 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1214 |
|
44580
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1215 .. _context-info: |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1216 |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1217 Adding contextual information to your logging output |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1218 ---------------------------------------------------- |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1219 |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1220 Sometimes you want logging output to contain contextual information in |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1221 addition to the parameters passed to the logging call. For example, in a |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1222 networked application, it may be desirable to log client-specific information |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1223 in the log (e.g. remote client's username, or IP address). Although you could |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1224 use the *extra* parameter to achieve this, it's not always convenient to pass |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1225 the information in this way. While it might be tempting to create |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1226 :class:`Logger` instances on a per-connection basis, this is not a good idea |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1227 because these instances are not garbage collected. While this is not a problem |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1228 in practice, when the number of :class:`Logger` instances is dependent on the |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1229 level of granularity you want to use in logging an application, it could |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1230 be hard to manage if the number of :class:`Logger` instances becomes |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1231 effectively unbounded. |
|
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1232 |
|
44744
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1233 An easy way in which you can pass contextual information to be output along |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1234 with logging event information is to use the :class:`LoggerAdapter` class. |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1235 This class is designed to look like a :class:`Logger`, so that you can call |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1236 :meth:`debug`, :meth:`info`, :meth:`warning`, :meth:`error`, |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1237 :meth:`exception`, :meth:`critical` and :meth:`log`. These methods have the |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1238 same signatures as their counterparts in :class:`Logger`, so you can use the |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1239 two types of instances interchangeably. |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1240 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1241 When you create an instance of :class:`LoggerAdapter`, you pass it a |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1242 :class:`Logger` instance and a dict-like object which contains your contextual |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1243 information. When you call one of the logging methods on an instance of |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1244 :class:`LoggerAdapter`, it delegates the call to the underlying instance of |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1245 :class:`Logger` passed to its constructor, and arranges to pass the contextual |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1246 information in the delegated call. Here's a snippet from the code of |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1247 :class:`LoggerAdapter`:: |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1248 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1249 def debug(self, msg, *args, **kwargs): |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1250 """ |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1251 Delegate a debug call to the underlying logger, after adding |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1252 contextual information from this adapter instance. |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1253 """ |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1254 msg, kwargs = self.process(msg, kwargs) |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1255 self.logger.debug(msg, *args, **kwargs) |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1256 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1257 The :meth:`process` method of :class:`LoggerAdapter` is where the contextual |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1258 information is added to the logging output. It's passed the message and |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1259 keyword arguments of the logging call, and it passes back (potentially) |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1260 modified versions of these to use in the call to the underlying logger. The |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1261 default implementation of this method leaves the message alone, but inserts |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1262 an "extra" key in the keyword argument whose value is the dict-like object |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1263 passed to the constructor. Of course, if you had passed an "extra" keyword |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1264 argument in the call to the adapter, it will be silently overwritten. |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1265 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1266 The advantage of using "extra" is that the values in the dict-like object are |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1267 merged into the :class:`LogRecord` instance's __dict__, allowing you to use |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1268 customized strings with your :class:`Formatter` instances which know about |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1269 the keys of the dict-like object. If you need a different method, e.g. if you |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1270 want to prepend or append the contextual information to the message string, |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1271 you just need to subclass :class:`LoggerAdapter` and override :meth:`process` |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1272 to do what you need. Here's an example script which uses this class, which |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1273 also illustrates what dict-like behaviour is needed from an arbitrary |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1274 "dict-like" object for use in the constructor:: |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1275 |
| 44758 | 1276 import logging |
|
44849
32412fceb1b3
Minor documentation change - hyperlink tidied up.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44758
diff
changeset
|
1277 |
| 44758 | 1278 class ConnInfo: |
| 1279 """ | |
| 1280 An example class which shows how an arbitrary class can be used as | |
| 1281 the 'extra' context information repository passed to a LoggerAdapter. | |
| 1282 """ | |
|
44849
32412fceb1b3
Minor documentation change - hyperlink tidied up.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44758
diff
changeset
|
1283 |
| 44758 | 1284 def __getitem__(self, name): |
| 1285 """ | |
| 1286 To allow this instance to look like a dict. | |
| 1287 """ | |
| 1288 from random import choice | |
| 1289 if name == "ip": | |
| 1290 result = choice(["127.0.0.1", "192.168.0.1"]) | |
| 1291 elif name == "user": | |
| 1292 result = choice(["jim", "fred", "sheila"]) | |
| 1293 else: | |
| 1294 result = self.__dict__.get(name, "?") | |
| 1295 return result | |
|
44849
32412fceb1b3
Minor documentation change - hyperlink tidied up.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44758
diff
changeset
|
1296 |
| 44758 | 1297 def __iter__(self): |
| 1298 """ | |
| 1299 To allow iteration over keys, which will be merged into | |
| 1300 the LogRecord dict before formatting and output. | |
| 1301 """ | |
| 1302 keys = ["ip", "user"] | |
| 1303 keys.extend(self.__dict__.keys()) | |
| 1304 return keys.__iter__() | |
|
44849
32412fceb1b3
Minor documentation change - hyperlink tidied up.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44758
diff
changeset
|
1305 |
| 44758 | 1306 if __name__ == "__main__": |
| 1307 from random import choice | |
| 1308 levels = (logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL) | |
| 1309 a1 = logging.LoggerAdapter(logging.getLogger("a.b.c"), | |
| 1310 { "ip" : "123.231.231.123", "user" : "sheila" }) | |
| 1311 logging.basicConfig(level=logging.DEBUG, | |
| 1312 format="%(asctime)-15s %(name)-5s %(levelname)-8s IP: %(ip)-15s User: %(user)-8s %(message)s") | |
| 1313 a1.debug("A debug message") | |
| 1314 a1.info("An info message with %s", "some parameters") | |
| 1315 a2 = logging.LoggerAdapter(logging.getLogger("d.e.f"), ConnInfo()) | |
| 1316 for x in range(10): | |
| 1317 lvl = choice(levels) | |
| 1318 lvlname = logging.getLevelName(lvl) | |
| 1319 a2.log(lvl, "A message at %s level with %d %s", lvlname, 2, "parameters") | |
|
44744
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1320 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1321 When this script is run, the output should look something like this:: |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1322 |
| 44758 | 1323 2008-01-18 14:49:54,023 a.b.c DEBUG IP: 123.231.231.123 User: sheila A debug message |
| 1324 2008-01-18 14:49:54,023 a.b.c INFO IP: 123.231.231.123 User: sheila An info message with some parameters | |
| 1325 2008-01-18 14:49:54,023 d.e.f CRITICAL IP: 192.168.0.1 User: jim A message at CRITICAL level with 2 parameters | |
| 1326 2008-01-18 14:49:54,033 d.e.f INFO IP: 192.168.0.1 User: jim A message at INFO level with 2 parameters | |
| 1327 2008-01-18 14:49:54,033 d.e.f WARNING IP: 192.168.0.1 User: sheila A message at WARNING level with 2 parameters | |
| 1328 2008-01-18 14:49:54,033 d.e.f ERROR IP: 127.0.0.1 User: fred A message at ERROR level with 2 parameters | |
| 1329 2008-01-18 14:49:54,033 d.e.f ERROR IP: 127.0.0.1 User: sheila A message at ERROR level with 2 parameters | |
| 1330 2008-01-18 14:49:54,033 d.e.f WARNING IP: 192.168.0.1 User: sheila A message at WARNING level with 2 parameters | |
| 1331 2008-01-18 14:49:54,033 d.e.f WARNING IP: 192.168.0.1 User: jim A message at WARNING level with 2 parameters | |
| 1332 2008-01-18 14:49:54,033 d.e.f INFO IP: 192.168.0.1 User: fred A message at INFO level with 2 parameters | |
| 1333 2008-01-18 14:49:54,033 d.e.f WARNING IP: 192.168.0.1 User: sheila A message at WARNING level with 2 parameters | |
| 1334 2008-01-18 14:49:54,033 d.e.f WARNING IP: 127.0.0.1 User: jim A message at WARNING level with 2 parameters | |
|
44744
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1335 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1336 .. versionadded:: 2.6 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1337 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1338 The :class:`LoggerAdapter` class was not present in previous versions. |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
1339 |
|
44580
e9756266e0b9
Added section about adding contextual information to log output.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44560
diff
changeset
|
1340 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1341 .. _network-logging: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1342 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1343 Sending and receiving logging events across a network |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1344 ----------------------------------------------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1345 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1346 Let's say you want to send logging events across a network, and handle them at |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1347 the receiving end. A simple way of doing this is attaching a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1348 :class:`SocketHandler` instance to the root logger at the sending end:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1349 |
|
51745
9815da43a1ce
revert r69777 since all the experts agree that extra import lines distract from the code
Benjamin Peterson <benjamin@python.org>
parents:
51742
diff
changeset
|
1350 import logging, logging.handlers |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1351 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1352 rootLogger = logging.getLogger('') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1353 rootLogger.setLevel(logging.DEBUG) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1354 socketHandler = logging.handlers.SocketHandler('localhost', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1355 logging.handlers.DEFAULT_TCP_LOGGING_PORT) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1356 # don't bother with a formatter, since a socket handler sends the event as |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1357 # an unformatted pickle |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1358 rootLogger.addHandler(socketHandler) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1359 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1360 # Now, we can log to the root logger, or any other logger. First the root... |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1361 logging.info('Jackdaws love my big sphinx of quartz.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1362 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1363 # Now, define a couple of other loggers which might represent areas in your |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1364 # application: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1365 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1366 logger1 = logging.getLogger('myapp.area1') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1367 logger2 = logging.getLogger('myapp.area2') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1368 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1369 logger1.debug('Quick zephyrs blow, vexing daft Jim.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1370 logger1.info('How quickly daft jumping zebras vex.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1371 logger2.warning('Jail zesty vixen who grabbed pay from quack.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1372 logger2.error('The five boxing wizards jump quickly.') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1373 |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
47009
diff
changeset
|
1374 At the receiving end, you can set up a receiver using the :mod:`SocketServer` |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1375 module. Here is a basic working example:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1376 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1377 import cPickle |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1378 import logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1379 import logging.handlers |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
47009
diff
changeset
|
1380 import SocketServer |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1381 import struct |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1382 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1383 |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
47009
diff
changeset
|
1384 class LogRecordStreamHandler(SocketServer.StreamRequestHandler): |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1385 """Handler for a streaming logging request. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1386 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1387 This basically logs the record using whatever logging policy is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1388 configured locally. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1389 """ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1390 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1391 def handle(self): |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1392 """ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1393 Handle multiple requests - each expected to be a 4-byte length, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1394 followed by the LogRecord in pickle format. Logs the record |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1395 according to whatever policy is configured locally. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1396 """ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1397 while 1: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1398 chunk = self.connection.recv(4) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1399 if len(chunk) < 4: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1400 break |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1401 slen = struct.unpack(">L", chunk)[0] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1402 chunk = self.connection.recv(slen) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1403 while len(chunk) < slen: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1404 chunk = chunk + self.connection.recv(slen - len(chunk)) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1405 obj = self.unPickle(chunk) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1406 record = logging.makeLogRecord(obj) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1407 self.handleLogRecord(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1408 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1409 def unPickle(self, data): |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1410 return cPickle.loads(data) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1411 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1412 def handleLogRecord(self, record): |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1413 # if a name is specified, we use the named logger rather than the one |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1414 # implied by the record. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1415 if self.server.logname is not None: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1416 name = self.server.logname |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1417 else: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1418 name = record.name |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1419 logger = logging.getLogger(name) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1420 # N.B. EVERY record gets logged. This is because Logger.handle |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1421 # is normally called AFTER logger-level filtering. If you want |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1422 # to do filtering, do it at the client end to save wasting |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1423 # cycles and network bandwidth! |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1424 logger.handle(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1425 |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
47009
diff
changeset
|
1426 class LogRecordSocketReceiver(SocketServer.ThreadingTCPServer): |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1427 """simple TCP socket-based logging receiver suitable for testing. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1428 """ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1429 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1430 allow_reuse_address = 1 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1431 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1432 def __init__(self, host='localhost', |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1433 port=logging.handlers.DEFAULT_TCP_LOGGING_PORT, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1434 handler=LogRecordStreamHandler): |
|
47241
ba1fa511b72d
socketserver renaming reversal part 3: move the module into the right
Georg Brandl <georg@python.org>
parents:
47009
diff
changeset
|
1435 SocketServer.ThreadingTCPServer.__init__(self, (host, port), handler) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1436 self.abort = 0 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1437 self.timeout = 1 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1438 self.logname = None |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1439 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1440 def serve_until_stopped(self): |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1441 import select |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1442 abort = 0 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1443 while not abort: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1444 rd, wr, ex = select.select([self.socket.fileno()], |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1445 [], [], |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1446 self.timeout) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1447 if rd: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1448 self.handle_request() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1449 abort = self.abort |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1450 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1451 def main(): |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1452 logging.basicConfig( |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1453 format="%(relativeCreated)5d %(name)-15s %(levelname)-8s %(message)s") |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1454 tcpserver = LogRecordSocketReceiver() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1455 print "About to start TCP server..." |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1456 tcpserver.serve_until_stopped() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1457 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1458 if __name__ == "__main__": |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1459 main() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1460 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1461 First run the server, and then the client. On the client side, nothing is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1462 printed on the console; on the server side, you should see something like:: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1463 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1464 About to start TCP server... |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1465 59 root INFO Jackdaws love my big sphinx of quartz. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1466 59 myapp.area1 DEBUG Quick zephyrs blow, vexing daft Jim. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1467 69 myapp.area1 INFO How quickly daft jumping zebras vex. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1468 69 myapp.area2 WARNING Jail zesty vixen who grabbed pay from quack. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1469 69 myapp.area2 ERROR The five boxing wizards jump quickly. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1470 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1471 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1472 .. _handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1473 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1474 Handler Objects |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1475 --------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1476 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1477 Handlers have the following attributes and methods. Note that :class:`Handler` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1478 is never instantiated directly; this class acts as a base for more useful |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1479 subclasses. However, the :meth:`__init__` method in subclasses needs to call |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1480 :meth:`Handler.__init__`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1481 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1482 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1483 .. method:: Handler.__init__(level=NOTSET) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1484 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1485 Initializes the :class:`Handler` instance by setting its level, setting the list |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1486 of filters to the empty list and creating a lock (using :meth:`createLock`) for |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1487 serializing access to an I/O mechanism. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1488 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1489 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1490 .. method:: Handler.createLock() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1491 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1492 Initializes a thread lock which can be used to serialize access to underlying |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1493 I/O functionality which may not be threadsafe. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1494 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1495 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1496 .. method:: Handler.acquire() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1497 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1498 Acquires the thread lock created with :meth:`createLock`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1499 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1500 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1501 .. method:: Handler.release() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1502 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1503 Releases the thread lock acquired with :meth:`acquire`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1504 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1505 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1506 .. method:: Handler.setLevel(lvl) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1507 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1508 Sets the threshold for this handler to *lvl*. Logging messages which are less |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1509 severe than *lvl* will be ignored. When a handler is created, the level is set |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1510 to :const:`NOTSET` (which causes all messages to be processed). |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1511 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1512 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1513 .. method:: Handler.setFormatter(form) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1514 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1515 Sets the :class:`Formatter` for this handler to *form*. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1516 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1517 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1518 .. method:: Handler.addFilter(filt) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1519 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1520 Adds the specified filter *filt* to this handler. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1521 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1522 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1523 .. method:: Handler.removeFilter(filt) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1524 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1525 Removes the specified filter *filt* from this handler. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1526 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1527 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1528 .. method:: Handler.filter(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1529 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1530 Applies this handler's filters to the record and returns a true value if the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1531 record is to be processed. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1532 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1533 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1534 .. method:: Handler.flush() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1535 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1536 Ensure all logging output has been flushed. This version does nothing and is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1537 intended to be implemented by subclasses. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1538 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1539 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1540 .. method:: Handler.close() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1541 |
|
48934
37a9f690a94a
Bug #3738: Documentation is now more accurate in describing handler close methods.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48927
diff
changeset
|
1542 Tidy up any resources used by the handler. This version does no output but |
|
37a9f690a94a
Bug #3738: Documentation is now more accurate in describing handler close methods.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48927
diff
changeset
|
1543 removes the handler from an internal list of handlers which is closed when |
|
37a9f690a94a
Bug #3738: Documentation is now more accurate in describing handler close methods.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48927
diff
changeset
|
1544 :func:`shutdown` is called. Subclasses should ensure that this gets called |
|
37a9f690a94a
Bug #3738: Documentation is now more accurate in describing handler close methods.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48927
diff
changeset
|
1545 from overridden :meth:`close` methods. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1546 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1547 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1548 .. method:: Handler.handle(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1549 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1550 Conditionally emits the specified logging record, depending on filters which may |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1551 have been added to the handler. Wraps the actual emission of the record with |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1552 acquisition/release of the I/O thread lock. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1553 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1554 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1555 .. method:: Handler.handleError(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1556 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1557 This method should be called from handlers when an exception is encountered |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1558 during an :meth:`emit` call. By default it does nothing, which means that |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1559 exceptions get silently ignored. This is what is mostly wanted for a logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1560 system - most users will not care about errors in the logging system, they are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1561 more interested in application errors. You could, however, replace this with a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1562 custom handler if you wish. The specified record is the one which was being |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1563 processed when the exception occurred. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1564 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1565 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1566 .. method:: Handler.format(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1567 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1568 Do formatting for a record - if a formatter is set, use it. Otherwise, use the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1569 default formatter for the module. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1570 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1571 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1572 .. method:: Handler.emit(record) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1573 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1574 Do whatever it takes to actually log the specified logging record. This version |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1575 is intended to be implemented by subclasses and so raises a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1576 :exc:`NotImplementedError`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1577 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1578 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1579 .. _stream-handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1580 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1581 StreamHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1582 ^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1583 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1584 The :class:`StreamHandler` class, located in the core :mod:`logging` package, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1585 sends logging output to streams such as *sys.stdout*, *sys.stderr* or any |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1586 file-like object (or, more precisely, any object which supports :meth:`write` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1587 and :meth:`flush` methods). |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1588 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1589 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1590 .. class:: StreamHandler([strm]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1591 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1592 Returns a new instance of the :class:`StreamHandler` class. If *strm* is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1593 specified, the instance will use it for logging output; otherwise, *sys.stderr* |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1594 will be used. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1595 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1596 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1597 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1598 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1599 If a formatter is specified, it is used to format the record. The record |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1600 is then written to the stream with a trailing newline. If exception |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1601 information is present, it is formatted using |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1602 :func:`traceback.print_exception` and appended to the stream. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1603 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1604 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1605 .. method:: flush() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1606 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1607 Flushes the stream by calling its :meth:`flush` method. Note that the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1608 :meth:`close` method is inherited from :class:`Handler` and so does |
|
48934
37a9f690a94a
Bug #3738: Documentation is now more accurate in describing handler close methods.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48927
diff
changeset
|
1609 no output, so an explicit :meth:`flush` call may be needed at times. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1610 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1611 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1612 .. _file-handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1613 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1614 FileHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1615 ^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1616 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1617 The :class:`FileHandler` class, located in the core :mod:`logging` package, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1618 sends logging output to a disk file. It inherits the output functionality from |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1619 :class:`StreamHandler`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1620 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1621 |
|
44909
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1622 .. class:: FileHandler(filename[, mode[, encoding[, delay]]]) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1623 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1624 Returns a new instance of the :class:`FileHandler` class. The specified file is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1625 opened and used as the stream for logging. If *mode* is not specified, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1626 :const:`'a'` is used. If *encoding* is not *None*, it is used to open the file |
|
44909
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1627 with that encoding. If *delay* is true, then file opening is deferred until the |
|
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1628 first call to :meth:`emit`. By default, the file grows indefinitely. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1629 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1630 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1631 .. method:: close() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1632 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1633 Closes the file. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1634 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1635 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1636 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1637 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1638 Outputs the record to the file. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1639 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1640 .. _null-handler: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1641 |
|
50455
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1642 NullHandler |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1643 ^^^^^^^^^^^ |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1644 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1645 .. versionadded:: 2.7 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1646 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1647 The :class:`NullHandler` class, located in the core :mod:`logging` package, |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1648 does not do any formatting or output. It is essentially a "no-op" handler |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1649 for use by library developers. |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1650 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1651 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1652 .. class:: NullHandler() |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1653 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1654 Returns a new instance of the :class:`NullHandler` class. |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1655 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1656 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1657 .. method:: emit(record) |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1658 |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1659 This method does nothing. |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1660 |
|
50694
dbe39ebd3025
Minor documentation changes cross-referencing NullHandler to the documentation on configuring logging in a library.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50455
diff
changeset
|
1661 See :ref:`library-config` for more information on how to use |
|
dbe39ebd3025
Minor documentation changes cross-referencing NullHandler to the documentation on configuring logging in a library.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50455
diff
changeset
|
1662 :class:`NullHandler`. |
|
dbe39ebd3025
Minor documentation changes cross-referencing NullHandler to the documentation on configuring logging in a library.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50455
diff
changeset
|
1663 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1664 .. _watched-file-handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1665 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1666 WatchedFileHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1667 ^^^^^^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1668 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1669 .. versionadded:: 2.6 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1670 |
|
50808
2680a4beaea1
Minor changes/corrections in markup.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50807
diff
changeset
|
1671 .. currentmodule:: logging.handlers |
|
50455
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
1672 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1673 The :class:`WatchedFileHandler` class, located in the :mod:`logging.handlers` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1674 module, is a :class:`FileHandler` which watches the file it is logging to. If |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1675 the file changes, it is closed and reopened using the file name. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1676 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1677 A file change can happen because of usage of programs such as *newsyslog* and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1678 *logrotate* which perform log file rotation. This handler, intended for use |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1679 under Unix/Linux, watches the file to see if it has changed since the last emit. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1680 (A file is deemed to have changed if its device or inode have changed.) If the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1681 file has changed, the old file stream is closed, and the file opened to get a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1682 new stream. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1683 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1684 This handler is not appropriate for use under Windows, because under Windows |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1685 open log files cannot be moved or renamed - logging opens the files with |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1686 exclusive locks - and so there is no need for such a handler. Furthermore, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1687 *ST_INO* is not supported under Windows; :func:`stat` always returns zero for |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1688 this value. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1689 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1690 |
|
44909
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1691 .. class:: WatchedFileHandler(filename[,mode[, encoding[, delay]]]) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1692 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1693 Returns a new instance of the :class:`WatchedFileHandler` class. The specified |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1694 file is opened and used as the stream for logging. If *mode* is not specified, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1695 :const:`'a'` is used. If *encoding* is not *None*, it is used to open the file |
|
44909
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1696 with that encoding. If *delay* is true, then file opening is deferred until the |
|
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1697 first call to :meth:`emit`. By default, the file grows indefinitely. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1698 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1699 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1700 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1701 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1702 Outputs the record to the file, but first checks to see if the file has |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1703 changed. If it has, the existing stream is flushed and closed and the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1704 file opened again, before outputting the record to the file. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1705 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1706 .. _rotating-file-handler: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1707 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1708 RotatingFileHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1709 ^^^^^^^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1710 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1711 The :class:`RotatingFileHandler` class, located in the :mod:`logging.handlers` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1712 module, supports rotation of disk log files. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1713 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1714 |
|
44909
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1715 .. class:: RotatingFileHandler(filename[, mode[, maxBytes[, backupCount[, encoding[, delay]]]]]) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1716 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1717 Returns a new instance of the :class:`RotatingFileHandler` class. The specified |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1718 file is opened and used as the stream for logging. If *mode* is not specified, |
|
44909
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1719 ``'a'`` is used. If *encoding* is not *None*, it is used to open the file |
|
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1720 with that encoding. If *delay* is true, then file opening is deferred until the |
|
cba3084b27e7
Added documentation for optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44849
diff
changeset
|
1721 first call to :meth:`emit`. By default, the file grows indefinitely. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1722 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1723 You can use the *maxBytes* and *backupCount* values to allow the file to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1724 :dfn:`rollover` at a predetermined size. When the size is about to be exceeded, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1725 the file is closed and a new file is silently opened for output. Rollover occurs |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1726 whenever the current log file is nearly *maxBytes* in length; if *maxBytes* is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1727 zero, rollover never occurs. If *backupCount* is non-zero, the system will save |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1728 old log files by appending the extensions ".1", ".2" etc., to the filename. For |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1729 example, with a *backupCount* of 5 and a base file name of :file:`app.log`, you |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1730 would get :file:`app.log`, :file:`app.log.1`, :file:`app.log.2`, up to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1731 :file:`app.log.5`. The file being written to is always :file:`app.log`. When |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1732 this file is filled, it is closed and renamed to :file:`app.log.1`, and if files |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1733 :file:`app.log.1`, :file:`app.log.2`, etc. exist, then they are renamed to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1734 :file:`app.log.2`, :file:`app.log.3` etc. respectively. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1735 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1736 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1737 .. method:: doRollover() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1738 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1739 Does a rollover, as described above. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1740 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1741 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1742 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1743 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1744 Outputs the record to the file, catering for rollover as described |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1745 previously. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1746 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1747 .. _timed-rotating-file-handler: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1748 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1749 TimedRotatingFileHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1750 ^^^^^^^^^^^^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1751 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1752 The :class:`TimedRotatingFileHandler` class, located in the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1753 :mod:`logging.handlers` module, supports rotation of disk log files at certain |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1754 timed intervals. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1755 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1756 |
| 47482 | 1757 .. class:: TimedRotatingFileHandler(filename [,when [,interval [,backupCount[, encoding[, delay[, utc]]]]]]) |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1758 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1759 Returns a new instance of the :class:`TimedRotatingFileHandler` class. The |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1760 specified file is opened and used as the stream for logging. On rotating it also |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1761 sets the filename suffix. Rotating happens based on the product of *when* and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1762 *interval*. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1763 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1764 You can use the *when* to specify the type of *interval*. The list of possible |
| 47487 | 1765 values is below. Note that they are not case sensitive. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1766 |
|
45610
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1767 +----------------+-----------------------+ |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1768 | Value | Type of interval | |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1769 +================+=======================+ |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1770 | ``'S'`` | Seconds | |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1771 +----------------+-----------------------+ |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1772 | ``'M'`` | Minutes | |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1773 +----------------+-----------------------+ |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1774 | ``'H'`` | Hours | |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1775 +----------------+-----------------------+ |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1776 | ``'D'`` | Days | |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1777 +----------------+-----------------------+ |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1778 | ``'W'`` | Week day (0=Monday) | |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1779 +----------------+-----------------------+ |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1780 | ``'midnight'`` | Roll over at midnight | |
|
0a8eecac5ad1
Make clear that the constants are strings.
Georg Brandl <georg@python.org>
parents:
45512
diff
changeset
|
1781 +----------------+-----------------------+ |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1782 |
| 45611 | 1783 The system will save old log files by appending extensions to the filename. |
| 1784 The extensions are date-and-time based, using the strftime format | |
|
46258
a94469c74b9e
Added updates with respect to recent changes to TimedRotatingFileHandler.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
45783
diff
changeset
|
1785 ``%Y-%m-%d_%H-%M-%S`` or a leading portion thereof, depending on the |
|
48011
1acfe428e8f1
Issue #3389: Allow resolving dotted names for handlers in logging configuration files. Thanks to Philip Jenvey for the patch.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
47487
diff
changeset
|
1786 rollover interval. |
| 47487 | 1787 If the *utc* argument is true, times in UTC will be used; otherwise |
| 47482 | 1788 local time is used. |
| 1789 | |
| 1790 If *backupCount* is nonzero, at most *backupCount* files | |
|
46258
a94469c74b9e
Added updates with respect to recent changes to TimedRotatingFileHandler.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
45783
diff
changeset
|
1791 will be kept, and if more would be created when rollover occurs, the oldest |
|
a94469c74b9e
Added updates with respect to recent changes to TimedRotatingFileHandler.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
45783
diff
changeset
|
1792 one is deleted. The deletion logic uses the interval to determine which |
|
a94469c74b9e
Added updates with respect to recent changes to TimedRotatingFileHandler.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
45783
diff
changeset
|
1793 files to delete, so changing the interval may leave old files lying around. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1794 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1795 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1796 .. method:: doRollover() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1797 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1798 Does a rollover, as described above. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1799 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1800 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1801 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1802 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1803 Outputs the record to the file, catering for rollover as described above. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1804 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1805 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1806 .. _socket-handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1807 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1808 SocketHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1809 ^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1810 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1811 The :class:`SocketHandler` class, located in the :mod:`logging.handlers` module, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1812 sends logging output to a network socket. The base class uses a TCP socket. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1813 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1814 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1815 .. class:: SocketHandler(host, port) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1816 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1817 Returns a new instance of the :class:`SocketHandler` class intended to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1818 communicate with a remote machine whose address is given by *host* and *port*. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1819 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1820 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1821 .. method:: close() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1822 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1823 Closes the socket. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1824 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1825 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1826 .. method:: emit() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1827 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1828 Pickles the record's attribute dictionary and writes it to the socket in |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1829 binary format. If there is an error with the socket, silently drops the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1830 packet. If the connection was previously lost, re-establishes the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1831 connection. To unpickle the record at the receiving end into a |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1832 :class:`LogRecord`, use the :func:`makeLogRecord` function. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1833 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1834 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1835 .. method:: handleError() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1836 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1837 Handles an error which has occurred during :meth:`emit`. The most likely |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1838 cause is a lost connection. Closes the socket so that we can retry on the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1839 next event. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1840 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1841 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1842 .. method:: makeSocket() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1843 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1844 This is a factory method which allows subclasses to define the precise |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1845 type of socket they want. The default implementation creates a TCP socket |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1846 (:const:`socket.SOCK_STREAM`). |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1847 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1848 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1849 .. method:: makePickle(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1850 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1851 Pickles the record's attribute dictionary in binary format with a length |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1852 prefix, and returns it ready for transmission across the socket. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1853 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1854 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1855 .. method:: send(packet) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1856 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1857 Send a pickled string *packet* to the socket. This function allows for |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1858 partial sends which can happen when the network is busy. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1859 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1860 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1861 .. _datagram-handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1862 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1863 DatagramHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1864 ^^^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1865 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1866 The :class:`DatagramHandler` class, located in the :mod:`logging.handlers` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1867 module, inherits from :class:`SocketHandler` to support sending logging messages |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1868 over UDP sockets. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1869 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1870 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1871 .. class:: DatagramHandler(host, port) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1872 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1873 Returns a new instance of the :class:`DatagramHandler` class intended to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1874 communicate with a remote machine whose address is given by *host* and *port*. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1875 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1876 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1877 .. method:: emit() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1878 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1879 Pickles the record's attribute dictionary and writes it to the socket in |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1880 binary format. If there is an error with the socket, silently drops the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1881 packet. To unpickle the record at the receiving end into a |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1882 :class:`LogRecord`, use the :func:`makeLogRecord` function. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1883 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1884 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1885 .. method:: makeSocket() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1886 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1887 The factory method of :class:`SocketHandler` is here overridden to create |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1888 a UDP socket (:const:`socket.SOCK_DGRAM`). |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1889 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1890 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1891 .. method:: send(s) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1892 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1893 Send a pickled string to a socket. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1894 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1895 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1896 .. _syslog-handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1897 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1898 SysLogHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1899 ^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1900 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1901 The :class:`SysLogHandler` class, located in the :mod:`logging.handlers` module, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1902 supports sending logging messages to a remote or local Unix syslog. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1903 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1904 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1905 .. class:: SysLogHandler([address[, facility]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1906 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1907 Returns a new instance of the :class:`SysLogHandler` class intended to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1908 communicate with a remote Unix machine whose address is given by *address* in |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1909 the form of a ``(host, port)`` tuple. If *address* is not specified, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1910 ``('localhost', 514)`` is used. The address is used to open a UDP socket. An |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1911 alternative to providing a ``(host, port)`` tuple is providing an address as a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1912 string, for example "/dev/log". In this case, a Unix domain socket is used to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1913 send the message to the syslog. If *facility* is not specified, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1914 :const:`LOG_USER` is used. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1915 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1916 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1917 .. method:: close() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1918 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1919 Closes the socket to the remote host. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1920 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1921 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1922 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1923 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1924 The record is formatted, and then sent to the syslog server. If exception |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1925 information is present, it is *not* sent to the server. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1926 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1927 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1928 .. method:: encodePriority(facility, priority) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1929 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1930 Encodes the facility and priority into an integer. You can pass in strings |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1931 or integers - if strings are passed, internal mapping dictionaries are |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1932 used to convert them to integers. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1933 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1934 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1935 .. _nt-eventlog-handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
1936 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1937 NTEventLogHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1938 ^^^^^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1939 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1940 The :class:`NTEventLogHandler` class, located in the :mod:`logging.handlers` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1941 module, supports sending logging messages to a local Windows NT, Windows 2000 or |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1942 Windows XP event log. Before you can use it, you need Mark Hammond's Win32 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1943 extensions for Python installed. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1944 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1945 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1946 .. class:: NTEventLogHandler(appname[, dllname[, logtype]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1947 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1948 Returns a new instance of the :class:`NTEventLogHandler` class. The *appname* is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1949 used to define the application name as it appears in the event log. An |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1950 appropriate registry entry is created using this name. The *dllname* should give |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1951 the fully qualified pathname of a .dll or .exe which contains message |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1952 definitions to hold in the log (if not specified, ``'win32service.pyd'`` is used |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1953 - this is installed with the Win32 extensions and contains some basic |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1954 placeholder message definitions. Note that use of these placeholders will make |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1955 your event logs big, as the entire message source is held in the log. If you |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1956 want slimmer logs, you have to pass in the name of your own .dll or .exe which |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1957 contains the message definitions you want to use in the event log). The |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1958 *logtype* is one of ``'Application'``, ``'System'`` or ``'Security'``, and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1959 defaults to ``'Application'``. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1960 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
1961 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1962 .. method:: close() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1963 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1964 At this point, you can remove the application name from the registry as a |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1965 source of event log entries. However, if you do this, you will not be able |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1966 to see the events as you intended in the Event Log Viewer - it needs to be |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1967 able to access the registry to get the .dll name. The current version does |
|
48934
37a9f690a94a
Bug #3738: Documentation is now more accurate in describing handler close methods.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48927
diff
changeset
|
1968 not do this. |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1969 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1970 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1971 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1972 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1973 Determines the message ID, event category and event type, and then logs |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1974 the message in the NT event log. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1975 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1976 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1977 .. method:: getEventCategory(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1978 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1979 Returns the event category for the record. Override this if you want to |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1980 specify your own categories. This version returns 0. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1981 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1982 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1983 .. method:: getEventType(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1984 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1985 Returns the event type for the record. Override this if you want to |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1986 specify your own types. This version does a mapping using the handler's |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1987 typemap attribute, which is set up in :meth:`__init__` to a dictionary |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1988 which contains mappings for :const:`DEBUG`, :const:`INFO`, |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1989 :const:`WARNING`, :const:`ERROR` and :const:`CRITICAL`. If you are using |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1990 your own levels, you will either need to override this method or place a |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1991 suitable dictionary in the handler's *typemap* attribute. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1992 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1993 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1994 .. method:: getMessageID(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1995 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1996 Returns the message ID for the record. If you are using your own messages, |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1997 you could do this by having the *msg* passed to the logger being an ID |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1998 rather than a format string. Then, in here, you could use a dictionary |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
1999 lookup to get the message ID. This version returns 1, which is the base |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2000 message ID in :file:`win32service.pyd`. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2001 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2002 .. _smtp-handler: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2003 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2004 SMTPHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2005 ^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2006 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2007 The :class:`SMTPHandler` class, located in the :mod:`logging.handlers` module, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2008 supports sending logging messages to an email address via SMTP. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2009 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2010 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2011 .. class:: SMTPHandler(mailhost, fromaddr, toaddrs, subject[, credentials]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2012 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2013 Returns a new instance of the :class:`SMTPHandler` class. The instance is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2014 initialized with the from and to addresses and subject line of the email. The |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2015 *toaddrs* should be a list of strings. To specify a non-standard SMTP port, use |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2016 the (host, port) tuple format for the *mailhost* argument. If you use a string, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2017 the standard SMTP port is used. If your SMTP server requires authentication, you |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2018 can specify a (username, password) tuple for the *credentials* argument. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2019 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2020 .. versionchanged:: 2.6 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2021 *credentials* was added. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2022 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2023 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2024 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2025 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2026 Formats the record and sends it to the specified addressees. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2027 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2028 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2029 .. method:: getSubject(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2030 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2031 If you want to specify a subject line which is record-dependent, override |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2032 this method. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2033 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2034 .. _memory-handler: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2035 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2036 MemoryHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2037 ^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2038 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2039 The :class:`MemoryHandler` class, located in the :mod:`logging.handlers` module, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2040 supports buffering of logging records in memory, periodically flushing them to a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2041 :dfn:`target` handler. Flushing occurs whenever the buffer is full, or when an |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2042 event of a certain severity or greater is seen. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2043 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2044 :class:`MemoryHandler` is a subclass of the more general |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2045 :class:`BufferingHandler`, which is an abstract class. This buffers logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2046 records in memory. Whenever each record is added to the buffer, a check is made |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2047 by calling :meth:`shouldFlush` to see if the buffer should be flushed. If it |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2048 should, then :meth:`flush` is expected to do the needful. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2049 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2050 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2051 .. class:: BufferingHandler(capacity) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2052 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2053 Initializes the handler with a buffer of the specified capacity. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2054 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2055 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2056 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2057 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2058 Appends the record to the buffer. If :meth:`shouldFlush` returns true, |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2059 calls :meth:`flush` to process the buffer. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2060 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2061 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2062 .. method:: flush() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2063 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2064 You can override this to implement custom flushing behavior. This version |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2065 just zaps the buffer to empty. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2066 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2067 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2068 .. method:: shouldFlush(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2069 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2070 Returns true if the buffer is up to capacity. This method can be |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2071 overridden to implement custom flushing strategies. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2072 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2073 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2074 .. class:: MemoryHandler(capacity[, flushLevel [, target]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2075 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2076 Returns a new instance of the :class:`MemoryHandler` class. The instance is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2077 initialized with a buffer size of *capacity*. If *flushLevel* is not specified, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2078 :const:`ERROR` is used. If no *target* is specified, the target will need to be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2079 set using :meth:`setTarget` before this handler does anything useful. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2080 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2081 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2082 .. method:: close() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2083 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2084 Calls :meth:`flush`, sets the target to :const:`None` and clears the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2085 buffer. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2086 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2087 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2088 .. method:: flush() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2089 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2090 For a :class:`MemoryHandler`, flushing means just sending the buffered |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2091 records to the target, if there is one. Override if you want different |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2092 behavior. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2093 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2094 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2095 .. method:: setTarget(target) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2096 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2097 Sets the target handler for this handler. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2098 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2099 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2100 .. method:: shouldFlush(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2101 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2102 Checks for buffer full or a record at the *flushLevel* or higher. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2103 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2104 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2105 .. _http-handler: |
|
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2106 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2107 HTTPHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2108 ^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2109 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2110 The :class:`HTTPHandler` class, located in the :mod:`logging.handlers` module, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2111 supports sending logging messages to a Web server, using either ``GET`` or |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2112 ``POST`` semantics. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2113 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2114 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2115 .. class:: HTTPHandler(host, url[, method]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2116 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2117 Returns a new instance of the :class:`HTTPHandler` class. The instance is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2118 initialized with a host address, url and HTTP method. The *host* can be of the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2119 form ``host:port``, should you need to use a specific port number. If no |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2120 *method* is specified, ``GET`` is used. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2121 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2122 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2123 .. method:: emit(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2124 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2125 Sends the record to the Web server as an URL-encoded dictionary. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2126 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2127 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2128 .. _formatter: |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2129 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2130 Formatter Objects |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2131 ----------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2132 |
|
50415
e5dbf38b1dac
Handlers are in the `logging.handlers` module.
Georg Brandl <georg@python.org>
parents:
50371
diff
changeset
|
2133 .. currentmodule:: logging |
|
e5dbf38b1dac
Handlers are in the `logging.handlers` module.
Georg Brandl <georg@python.org>
parents:
50371
diff
changeset
|
2134 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2135 :class:`Formatter`\ s have the following attributes and methods. They are |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2136 responsible for converting a :class:`LogRecord` to (usually) a string which can |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2137 be interpreted by either a human or an external system. The base |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2138 :class:`Formatter` allows a formatting string to be specified. If none is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2139 supplied, the default value of ``'%(message)s'`` is used. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2140 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2141 A Formatter can be initialized with a format string which makes use of knowledge |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2142 of the :class:`LogRecord` attributes - such as the default value mentioned above |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2143 making use of the fact that the user's message and arguments are pre-formatted |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2144 into a :class:`LogRecord`'s *message* attribute. This format string contains |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2145 standard python %-style mapping keys. See section :ref:`string-formatting` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2146 for more information on string formatting. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2147 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2148 Currently, the useful mapping keys in a :class:`LogRecord` are: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2149 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2150 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2151 | Format | Description | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2152 +=========================+===============================================+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2153 | ``%(name)s`` | Name of the logger (logging channel). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2154 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2155 | ``%(levelno)s`` | Numeric logging level for the message | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2156 | | (:const:`DEBUG`, :const:`INFO`, | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2157 | | :const:`WARNING`, :const:`ERROR`, | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2158 | | :const:`CRITICAL`). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2159 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2160 | ``%(levelname)s`` | Text logging level for the message | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2161 | | (``'DEBUG'``, ``'INFO'``, ``'WARNING'``, | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2162 | | ``'ERROR'``, ``'CRITICAL'``). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2163 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2164 | ``%(pathname)s`` | Full pathname of the source file where the | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2165 | | logging call was issued (if available). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2166 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2167 | ``%(filename)s`` | Filename portion of pathname. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2168 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2169 | ``%(module)s`` | Module (name portion of filename). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2170 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2171 | ``%(funcName)s`` | Name of function containing the logging call. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2172 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2173 | ``%(lineno)d`` | Source line number where the logging call was | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2174 | | issued (if available). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2175 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2176 | ``%(created)f`` | Time when the :class:`LogRecord` was created | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2177 | | (as returned by :func:`time.time`). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2178 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2179 | ``%(relativeCreated)d`` | Time in milliseconds when the LogRecord was | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2180 | | created, relative to the time the logging | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2181 | | module was loaded. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2182 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2183 | ``%(asctime)s`` | Human-readable time when the | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2184 | | :class:`LogRecord` was created. By default | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2185 | | this is of the form "2003-07-08 16:49:45,896" | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2186 | | (the numbers after the comma are millisecond | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2187 | | portion of the time). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2188 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2189 | ``%(msecs)d`` | Millisecond portion of the time when the | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2190 | | :class:`LogRecord` was created. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2191 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2192 | ``%(thread)d`` | Thread ID (if available). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2193 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2194 | ``%(threadName)s`` | Thread name (if available). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2195 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2196 | ``%(process)d`` | Process ID (if available). | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2197 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2198 | ``%(message)s`` | The logged message, computed as ``msg % | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2199 | | args``. | |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2200 +-------------------------+-----------------------------------------------+ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2201 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2202 .. versionchanged:: 2.5 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2203 *funcName* was added. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2204 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2205 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2206 .. class:: Formatter([fmt[, datefmt]]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2207 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2208 Returns a new instance of the :class:`Formatter` class. The instance is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2209 initialized with a format string for the message as a whole, as well as a format |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2210 string for the date/time portion of a message. If no *fmt* is specified, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2211 ``'%(message)s'`` is used. If no *datefmt* is specified, the ISO8601 date format |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2212 is used. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2213 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2214 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2215 .. method:: format(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2216 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2217 The record's attribute dictionary is used as the operand to a string |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2218 formatting operation. Returns the resulting string. Before formatting the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2219 dictionary, a couple of preparatory steps are carried out. The *message* |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2220 attribute of the record is computed using *msg* % *args*. If the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2221 formatting string contains ``'(asctime)'``, :meth:`formatTime` is called |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2222 to format the event time. If there is exception information, it is |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2223 formatted using :meth:`formatException` and appended to the message. Note |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2224 that the formatted exception information is cached in attribute |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2225 *exc_text*. This is useful because the exception information can be |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2226 pickled and sent across the wire, but you should be careful if you have |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2227 more than one :class:`Formatter` subclass which customizes the formatting |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2228 of exception information. In this case, you will have to clear the cached |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2229 value after a formatter has done its formatting, so that the next |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2230 formatter to handle the event doesn't use the cached value but |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2231 recalculates it afresh. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2232 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2233 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2234 .. method:: formatTime(record[, datefmt]) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2235 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2236 This method should be called from :meth:`format` by a formatter which |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2237 wants to make use of a formatted time. This method can be overridden in |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2238 formatters to provide for any specific requirement, but the basic behavior |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2239 is as follows: if *datefmt* (a string) is specified, it is used with |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2240 :func:`time.strftime` to format the creation time of the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2241 record. Otherwise, the ISO8601 format is used. The resulting string is |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2242 returned. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2243 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2244 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2245 .. method:: formatException(exc_info) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2246 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2247 Formats the specified exception information (a standard exception tuple as |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2248 returned by :func:`sys.exc_info`) as a string. This default implementation |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2249 just uses :func:`traceback.print_exception`. The resulting string is |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2250 returned. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2251 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2252 .. _filter: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2253 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2254 Filter Objects |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2255 -------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2256 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2257 Filters can be used by :class:`Handler`\ s and :class:`Logger`\ s for |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2258 more sophisticated filtering than is provided by levels. The base filter class |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2259 only allows events which are below a certain point in the logger hierarchy. For |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2260 example, a filter initialized with "A.B" will allow events logged by loggers |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2261 "A.B", "A.B.C", "A.B.C.D", "A.B.D" etc. but not "A.BB", "B.A.B" etc. If |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2262 initialized with the empty string, all events are passed. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2263 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2264 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2265 .. class:: Filter([name]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2266 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2267 Returns an instance of the :class:`Filter` class. If *name* is specified, it |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2268 names a logger which, together with its children, will have its events allowed |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2269 through the filter. If no name is specified, allows every event. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2270 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2271 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2272 .. method:: filter(record) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2273 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2274 Is the specified record to be logged? Returns zero for no, nonzero for |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2275 yes. If deemed appropriate, the record may be modified in-place by this |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2276 method. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2277 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2278 .. _log-record: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2279 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2280 LogRecord Objects |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2281 ----------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2282 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2283 :class:`LogRecord` instances are created every time something is logged. They |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2284 contain all the information pertinent to the event being logged. The main |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2285 information passed in is in msg and args, which are combined using msg % args to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2286 create the message field of the record. The record also includes information |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2287 such as when the record was created, the source line where the logging call was |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2288 made, and any exception information to be logged. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2289 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2290 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2291 .. class:: LogRecord(name, lvl, pathname, lineno, msg, args, exc_info [, func]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2292 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2293 Returns an instance of :class:`LogRecord` initialized with interesting |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2294 information. The *name* is the logger name; *lvl* is the numeric level; |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2295 *pathname* is the absolute pathname of the source file in which the logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2296 call was made; *lineno* is the line number in that file where the logging |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2297 call is found; *msg* is the user-supplied message (a format string); *args* |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2298 is the tuple which, together with *msg*, makes up the user message; and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2299 *exc_info* is the exception tuple obtained by calling :func:`sys.exc_info` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2300 (or :const:`None`, if no exception information is available). The *func* is |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2301 the name of the function from which the logging call was made. If not |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2302 specified, it defaults to ``None``. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2303 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2304 .. versionchanged:: 2.5 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2305 *func* was added. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2306 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2307 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2308 .. method:: getMessage() |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2309 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2310 Returns the message for this :class:`LogRecord` instance after merging any |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2311 user-supplied arguments with the message. |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2312 |
|
50892
a6611615c76b
Added more cross-reference targets and tidied up list of useful handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50808
diff
changeset
|
2313 .. _logger-adapter: |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2314 |
|
44744
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2315 LoggerAdapter Objects |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2316 --------------------- |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2317 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2318 .. versionadded:: 2.6 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2319 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2320 :class:`LoggerAdapter` instances are used to conveniently pass contextual |
|
44849
32412fceb1b3
Minor documentation change - hyperlink tidied up.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44758
diff
changeset
|
2321 information into logging calls. For a usage example , see the section on |
|
32412fceb1b3
Minor documentation change - hyperlink tidied up.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44758
diff
changeset
|
2322 `adding contextual information to your logging output`__. |
|
32412fceb1b3
Minor documentation change - hyperlink tidied up.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44758
diff
changeset
|
2323 |
|
32412fceb1b3
Minor documentation change - hyperlink tidied up.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44758
diff
changeset
|
2324 __ context-info_ |
|
44744
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2325 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2326 .. class:: LoggerAdapter(logger, extra) |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2327 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2328 Returns an instance of :class:`LoggerAdapter` initialized with an |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2329 underlying :class:`Logger` instance and a dict-like object. |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2330 |
|
46555
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2331 .. method:: process(msg, kwargs) |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2332 |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2333 Modifies the message and/or keyword arguments passed to a logging call in |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2334 order to insert contextual information. This implementation takes the object |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2335 passed as *extra* to the constructor and adds it to *kwargs* using key |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2336 'extra'. The return value is a (*msg*, *kwargs*) tuple which has the |
|
66c8bd1bedf3
reformat some documentation of classes so methods and attributes are under the class directive
Benjamin Peterson <benjamin@python.org>
parents:
46258
diff
changeset
|
2337 (possibly modified) versions of the arguments passed in. |
|
44744
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2338 |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2339 In addition to the above, :class:`LoggerAdapter` supports all the logging |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2340 methods of :class:`Logger`, i.e. :meth:`debug`, :meth:`info`, :meth:`warning`, |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2341 :meth:`error`, :meth:`exception`, :meth:`critical` and :meth:`log`. These |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2342 methods have the same signatures as their counterparts in :class:`Logger`, so |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2343 you can use the two types of instances interchangeably. |
|
d9833d2bf469
Added section on passing contextual information to logging and documentation for the LoggerAdapter class.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44580
diff
changeset
|
2344 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2345 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2346 Thread Safety |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2347 ------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2348 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2349 The logging module is intended to be thread-safe without any special work |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2350 needing to be done by its clients. It achieves this though using threading |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2351 locks; there is one lock to serialize access to the module's shared data, and |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2352 each handler also creates a lock to serialize access to its underlying I/O. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2353 |
|
52780
d19d890138f1
Clarified warning about logging use from asynchronous signal handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
52771
diff
changeset
|
2354 If you are implementing asynchronous signal handlers using the :mod:`signal` |
|
d19d890138f1
Clarified warning about logging use from asynchronous signal handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
52771
diff
changeset
|
2355 module, you may not be able to use logging from within such handlers. This is |
|
d19d890138f1
Clarified warning about logging use from asynchronous signal handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
52771
diff
changeset
|
2356 because lock implementations in the :mod:`threading` module are not always |
|
d19d890138f1
Clarified warning about logging use from asynchronous signal handlers.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
52771
diff
changeset
|
2357 re-entrant, and so cannot be invoked from such signal handlers. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2358 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2359 Configuration |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2360 ------------- |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2361 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2362 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2363 .. _logging-config-api: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2364 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2365 Configuration functions |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2366 ^^^^^^^^^^^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2367 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2368 The following functions configure the logging module. They are located in the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2369 :mod:`logging.config` module. Their use is optional --- you can configure the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2370 logging module using these functions or by making calls to the main API (defined |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2371 in :mod:`logging` itself) and defining handlers which are declared either in |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2372 :mod:`logging` or :mod:`logging.handlers`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2373 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2374 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2375 .. function:: fileConfig(fname[, defaults]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2376 |
|
50455
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2377 Reads the logging configuration from a :mod:`ConfigParser`\-format file named |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2378 *fname*. This function can be called several times from an application, |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2379 allowing an end user the ability to select from various pre-canned |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2380 configurations (if the developer provides a mechanism to present the choices |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2381 and load the chosen configuration). Defaults to be passed to the ConfigParser |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2382 can be specified in the *defaults* argument. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2383 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2384 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2385 .. function:: listen([port]) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2386 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2387 Starts up a socket server on the specified port, and listens for new |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2388 configurations. If no port is specified, the module's default |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2389 :const:`DEFAULT_LOGGING_CONFIG_PORT` is used. Logging configurations will be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2390 sent as a file suitable for processing by :func:`fileConfig`. Returns a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2391 :class:`Thread` instance on which you can call :meth:`start` to start the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2392 server, and which you can :meth:`join` when appropriate. To stop the server, |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2393 call :func:`stopListening`. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2394 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2395 To send a configuration to the socket, read in the configuration file and |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2396 send it to the socket as a string of bytes preceded by a four-byte length |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2397 string packed in binary using ``struct.pack('>L', n)``. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2398 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2399 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2400 .. function:: stopListening() |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2401 |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2402 Stops the listening server which was created with a call to :func:`listen`. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2403 This is typically called before calling :meth:`join` on the return value from |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2404 :func:`listen`. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2405 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2406 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2407 .. _logging-config-fileformat: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2408 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2409 Configuration file format |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2410 ^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2411 |
|
47252
e534ee0a4cd0
ConfigParser renaming reversal part 3: move module into place and adapt imports.
Georg Brandl <georg@python.org>
parents:
47241
diff
changeset
|
2412 The configuration file format understood by :func:`fileConfig` is based on |
|
50455
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2413 :mod:`ConfigParser` functionality. The file must contain sections called |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2414 ``[loggers]``, ``[handlers]`` and ``[formatters]`` which identify by name the |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2415 entities of each type which are defined in the file. For each such entity, |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2416 there is a separate section which identifies how that entity is configured. |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2417 Thus, for a logger named ``log01`` in the ``[loggers]`` section, the relevant |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2418 configuration details are held in a section ``[logger_log01]``. Similarly, a |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2419 handler called ``hand01`` in the ``[handlers]`` section will have its |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2420 configuration held in a section called ``[handler_hand01]``, while a formatter |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2421 called ``form01`` in the ``[formatters]`` section will have its configuration |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2422 specified in a section called ``[formatter_form01]``. The root logger |
|
ff106453254a
Minor documentation changes relating to NullHandler, the module used for handlers and references to ConfigParser.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50415
diff
changeset
|
2423 configuration must be specified in a section called ``[logger_root]``. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2424 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2425 Examples of these sections in the file are given below. :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2426 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2427 [loggers] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2428 keys=root,log02,log03,log04,log05,log06,log07 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2429 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2430 [handlers] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2431 keys=hand01,hand02,hand03,hand04,hand05,hand06,hand07,hand08,hand09 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2432 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2433 [formatters] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2434 keys=form01,form02,form03,form04,form05,form06,form07,form08,form09 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2435 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2436 The root logger must specify a level and a list of handlers. An example of a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2437 root logger section is given below. :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2438 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2439 [logger_root] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2440 level=NOTSET |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2441 handlers=hand01 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2442 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2443 The ``level`` entry can be one of ``DEBUG, INFO, WARNING, ERROR, CRITICAL`` or |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2444 ``NOTSET``. For the root logger only, ``NOTSET`` means that all messages will be |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2445 logged. Level values are :func:`eval`\ uated in the context of the ``logging`` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2446 package's namespace. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2447 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2448 The ``handlers`` entry is a comma-separated list of handler names, which must |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2449 appear in the ``[handlers]`` section. These names must appear in the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2450 ``[handlers]`` section and have corresponding sections in the configuration |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2451 file. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2452 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2453 For loggers other than the root logger, some additional information is required. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2454 This is illustrated by the following example. :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2455 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2456 [logger_parser] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2457 level=DEBUG |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2458 handlers=hand01 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2459 propagate=1 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2460 qualname=compiler.parser |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2461 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2462 The ``level`` and ``handlers`` entries are interpreted as for the root logger, |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2463 except that if a non-root logger's level is specified as ``NOTSET``, the system |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2464 consults loggers higher up the hierarchy to determine the effective level of the |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2465 logger. The ``propagate`` entry is set to 1 to indicate that messages must |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2466 propagate to handlers higher up the logger hierarchy from this logger, or 0 to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2467 indicate that messages are **not** propagated to handlers up the hierarchy. The |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2468 ``qualname`` entry is the hierarchical channel name of the logger, that is to |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2469 say the name used by the application to get the logger. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2470 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2471 Sections which specify handler configuration are exemplified by the following. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2472 :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2473 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2474 [handler_hand01] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2475 class=StreamHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2476 level=NOTSET |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2477 formatter=form01 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2478 args=(sys.stdout,) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2479 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2480 The ``class`` entry indicates the handler's class (as determined by :func:`eval` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2481 in the ``logging`` package's namespace). The ``level`` is interpreted as for |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2482 loggers, and ``NOTSET`` is taken to mean "log everything". |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2483 |
|
48011
1acfe428e8f1
Issue #3389: Allow resolving dotted names for handlers in logging configuration files. Thanks to Philip Jenvey for the patch.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
47487
diff
changeset
|
2484 .. versionchanged:: 2.6 |
|
1acfe428e8f1
Issue #3389: Allow resolving dotted names for handlers in logging configuration files. Thanks to Philip Jenvey for the patch.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
47487
diff
changeset
|
2485 Added support for resolving the handler's class as a dotted module and class |
|
1acfe428e8f1
Issue #3389: Allow resolving dotted names for handlers in logging configuration files. Thanks to Philip Jenvey for the patch.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
47487
diff
changeset
|
2486 name. |
|
1acfe428e8f1
Issue #3389: Allow resolving dotted names for handlers in logging configuration files. Thanks to Philip Jenvey for the patch.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
47487
diff
changeset
|
2487 |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2488 The ``formatter`` entry indicates the key name of the formatter for this |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2489 handler. If blank, a default formatter (``logging._defaultFormatter``) is used. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2490 If a name is specified, it must appear in the ``[formatters]`` section and have |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2491 a corresponding section in the configuration file. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2492 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2493 The ``args`` entry, when :func:`eval`\ uated in the context of the ``logging`` |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2494 package's namespace, is the list of arguments to the constructor for the handler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2495 class. Refer to the constructors for the relevant handlers, or to the examples |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2496 below, to see how typical entries are constructed. :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2497 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2498 [handler_hand02] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2499 class=FileHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2500 level=DEBUG |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2501 formatter=form02 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2502 args=('python.log', 'w') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2503 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2504 [handler_hand03] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2505 class=handlers.SocketHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2506 level=INFO |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2507 formatter=form03 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2508 args=('localhost', handlers.DEFAULT_TCP_LOGGING_PORT) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2509 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2510 [handler_hand04] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2511 class=handlers.DatagramHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2512 level=WARN |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2513 formatter=form04 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2514 args=('localhost', handlers.DEFAULT_UDP_LOGGING_PORT) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2515 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2516 [handler_hand05] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2517 class=handlers.SysLogHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2518 level=ERROR |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2519 formatter=form05 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2520 args=(('localhost', handlers.SYSLOG_UDP_PORT), handlers.SysLogHandler.LOG_USER) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2521 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2522 [handler_hand06] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2523 class=handlers.NTEventLogHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2524 level=CRITICAL |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2525 formatter=form06 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2526 args=('Python Application', '', 'Application') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2527 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2528 [handler_hand07] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2529 class=handlers.SMTPHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2530 level=WARN |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2531 formatter=form07 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2532 args=('localhost', 'from@abc', ['user1@abc', 'user2@xyz'], 'Logger Subject') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2533 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2534 [handler_hand08] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2535 class=handlers.MemoryHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2536 level=NOTSET |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2537 formatter=form08 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2538 target= |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2539 args=(10, ERROR) |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2540 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2541 [handler_hand09] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2542 class=handlers.HTTPHandler |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2543 level=NOTSET |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2544 formatter=form09 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2545 args=('localhost:9022', '/log', 'GET') |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2546 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2547 Sections which specify formatter configuration are typified by the following. :: |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2548 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2549 [formatter_form01] |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2550 format=F1 %(asctime)s %(levelname)s %(message)s |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2551 datefmt= |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2552 class=logging.Formatter |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2553 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2554 The ``format`` entry is the overall format string, and the ``datefmt`` entry is |
|
44383
3625234bf3d2
Some cleanup in the docs.
Georg Brandl <georg@python.org>
parents:
44195
diff
changeset
|
2555 the :func:`strftime`\ -compatible date/time format string. If empty, the |
|
3625234bf3d2
Some cleanup in the docs.
Georg Brandl <georg@python.org>
parents:
44195
diff
changeset
|
2556 package substitutes ISO8601 format date/times, which is almost equivalent to |
|
3625234bf3d2
Some cleanup in the docs.
Georg Brandl <georg@python.org>
parents:
44195
diff
changeset
|
2557 specifying the date format string ``"%Y-%m-%d %H:%M:%S"``. The ISO8601 format |
|
3625234bf3d2
Some cleanup in the docs.
Georg Brandl <georg@python.org>
parents:
44195
diff
changeset
|
2558 also specifies milliseconds, which are appended to the result of using the above |
|
3625234bf3d2
Some cleanup in the docs.
Georg Brandl <georg@python.org>
parents:
44195
diff
changeset
|
2559 format string, with a comma separator. An example time in ISO8601 format is |
|
3625234bf3d2
Some cleanup in the docs.
Georg Brandl <georg@python.org>
parents:
44195
diff
changeset
|
2560 ``2003-01-23 00:29:50,411``. |
|
42604
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2561 |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2562 The ``class`` entry is optional. It indicates the name of the formatter's class |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2563 (as a dotted module and class name.) This option is useful for instantiating a |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2564 :class:`Formatter` subclass. Subclasses of :class:`Formatter` can present |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2565 exception tracebacks in an expanded or condensed format. |
|
9e1529bf0442
Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff
changeset
|
2566 |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2567 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2568 Configuration server example |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2569 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2570 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2571 Here is an example of a module using the logging configuration server:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2572 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2573 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2574 import logging.config |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2575 import time |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2576 import os |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2577 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2578 # read initial config file |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2579 logging.config.fileConfig("logging.conf") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2580 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2581 # create and start listener on port 9999 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2582 t = logging.config.listen(9999) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2583 t.start() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2584 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2585 logger = logging.getLogger("simpleExample") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2586 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2587 try: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2588 # loop through logging calls to see the difference |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2589 # new configurations make, until Ctrl+C is pressed |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2590 while True: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2591 logger.debug("debug message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2592 logger.info("info message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2593 logger.warn("warn message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2594 logger.error("error message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2595 logger.critical("critical message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2596 time.sleep(5) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2597 except KeyboardInterrupt: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2598 # cleanup |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2599 logging.config.stopListening() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2600 t.join() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2601 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2602 And here is a script that takes a filename and sends that file to the server, |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2603 properly preceded with the binary-encoded length, as the new logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2604 configuration:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2605 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2606 #!/usr/bin/env python |
|
51745
9815da43a1ce
revert r69777 since all the experts agree that extra import lines distract from the code
Benjamin Peterson <benjamin@python.org>
parents:
51742
diff
changeset
|
2607 import socket, sys, struct |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2608 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2609 data_to_send = open(sys.argv[1], "r").read() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2610 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2611 HOST = 'localhost' |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2612 PORT = 9999 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2613 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2614 print "connecting..." |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2615 s.connect((HOST, PORT)) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2616 print "sending config..." |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2617 s.send(struct.pack(">L", len(data_to_send))) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2618 s.send(data_to_send) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2619 s.close() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2620 print "complete" |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2621 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2622 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2623 More examples |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2624 ------------- |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2625 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2626 Multiple handlers and formatters |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2627 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2628 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2629 Loggers are plain Python objects. The :func:`addHandler` method has no minimum |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2630 or maximum quota for the number of handlers you may add. Sometimes it will be |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2631 beneficial for an application to log all messages of all severities to a text |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2632 file while simultaneously logging errors or above to the console. To set this |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2633 up, simply configure the appropriate handlers. The logging calls in the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2634 application code will remain unchanged. Here is a slight modification to the |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2635 previous simple module-based configuration example:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2636 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2637 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2638 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2639 logger = logging.getLogger("simple_example") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2640 logger.setLevel(logging.DEBUG) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2641 # create file handler which logs even debug messages |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2642 fh = logging.FileHandler("spam.log") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2643 fh.setLevel(logging.DEBUG) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2644 # create console handler with a higher log level |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2645 ch = logging.StreamHandler() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2646 ch.setLevel(logging.ERROR) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2647 # create formatter and add it to the handlers |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2648 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2649 ch.setFormatter(formatter) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2650 fh.setFormatter(formatter) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2651 # add the handlers to logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2652 logger.addHandler(ch) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2653 logger.addHandler(fh) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2654 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2655 # "application" code |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2656 logger.debug("debug message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2657 logger.info("info message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2658 logger.warn("warn message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2659 logger.error("error message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2660 logger.critical("critical message") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2661 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2662 Notice that the "application" code does not care about multiple handlers. All |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2663 that changed was the addition and configuration of a new handler named *fh*. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2664 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2665 The ability to create new handlers with higher- or lower-severity filters can be |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2666 very helpful when writing and testing an application. Instead of using many |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2667 ``print`` statements for debugging, use ``logger.debug``: Unlike the print |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2668 statements, which you will have to delete or comment out later, the logger.debug |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2669 statements can remain intact in the source code and remain dormant until you |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2670 need them again. At that time, the only change that needs to happen is to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2671 modify the severity level of the logger and/or handler to debug. |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2672 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2673 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2674 Using logging in multiple modules |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2675 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2676 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2677 It was mentioned above that multiple calls to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2678 ``logging.getLogger('someLogger')`` return a reference to the same logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2679 object. This is true not only within the same module, but also across modules |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2680 as long as it is in the same Python interpreter process. It is true for |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2681 references to the same object; additionally, application code can define and |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2682 configure a parent logger in one module and create (but not configure) a child |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2683 logger in a separate module, and all logger calls to the child will pass up to |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2684 the parent. Here is a main module:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2685 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2686 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2687 import auxiliary_module |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2688 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2689 # create logger with "spam_application" |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2690 logger = logging.getLogger("spam_application") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2691 logger.setLevel(logging.DEBUG) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2692 # create file handler which logs even debug messages |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2693 fh = logging.FileHandler("spam.log") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2694 fh.setLevel(logging.DEBUG) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2695 # create console handler with a higher log level |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2696 ch = logging.StreamHandler() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2697 ch.setLevel(logging.ERROR) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2698 # create formatter and add it to the handlers |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2699 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2700 fh.setFormatter(formatter) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2701 ch.setFormatter(formatter) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2702 # add the handlers to the logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2703 logger.addHandler(fh) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2704 logger.addHandler(ch) |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2705 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2706 logger.info("creating an instance of auxiliary_module.Auxiliary") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2707 a = auxiliary_module.Auxiliary() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2708 logger.info("created an instance of auxiliary_module.Auxiliary") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2709 logger.info("calling auxiliary_module.Auxiliary.do_something") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2710 a.do_something() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2711 logger.info("finished auxiliary_module.Auxiliary.do_something") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2712 logger.info("calling auxiliary_module.some_function()") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2713 auxiliary_module.some_function() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2714 logger.info("done with auxiliary_module.some_function()") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2715 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2716 Here is the auxiliary module:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2717 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2718 import logging |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2719 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2720 # create logger |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2721 module_logger = logging.getLogger("spam_application.auxiliary") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2722 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2723 class Auxiliary: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2724 def __init__(self): |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2725 self.logger = logging.getLogger("spam_application.auxiliary.Auxiliary") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2726 self.logger.info("creating an instance of Auxiliary") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2727 def do_something(self): |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2728 self.logger.info("doing something") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2729 a = 1 + 1 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2730 self.logger.info("done doing something") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2731 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2732 def some_function(): |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2733 module_logger.info("received a call to \"some_function\"") |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2734 |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2735 The output looks like this:: |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2736 |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2737 2005-03-23 23:47:11,663 - spam_application - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2738 creating an instance of auxiliary_module.Auxiliary |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2739 2005-03-23 23:47:11,665 - spam_application.auxiliary.Auxiliary - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2740 creating an instance of Auxiliary |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2741 2005-03-23 23:47:11,665 - spam_application - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2742 created an instance of auxiliary_module.Auxiliary |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2743 2005-03-23 23:47:11,668 - spam_application - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2744 calling auxiliary_module.Auxiliary.do_something |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2745 2005-03-23 23:47:11,668 - spam_application.auxiliary.Auxiliary - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2746 doing something |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2747 2005-03-23 23:47:11,669 - spam_application.auxiliary.Auxiliary - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2748 done doing something |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2749 2005-03-23 23:47:11,670 - spam_application - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2750 finished auxiliary_module.Auxiliary.do_something |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2751 2005-03-23 23:47:11,671 - spam_application - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2752 calling auxiliary_module.some_function() |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2753 2005-03-23 23:47:11,672 - spam_application.auxiliary - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2754 received a call to "some_function" |
|
44560
b98977f0aba1
Updated docs for basicConfig to indicate it's a no-op if handlers have been defined for the root logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44383
diff
changeset
|
2755 2005-03-23 23:47:11,673 - spam_application - INFO - |
|
44151
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2756 done with auxiliary_module.some_function() |
|
16ba00168c6a
Add tutorial and examples to logging docs, from GHOP student "oscar8thegrouch".
Georg Brandl <georg@python.org>
parents:
43643
diff
changeset
|
2757 |
