Mercurial > cpython-lru_cache-weakref
annotate Lib/logging/__init__.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 344b4737d2fe |
| children | d7660ccd8470 ef060b833183 |
| rev | line source |
|---|---|
|
75211
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
1 # Copyright 2001-2012 by Vinay Sajip. All Rights Reserved. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 # Permission to use, copy, modify, and distribute this software and its |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 # documentation for any purpose and without fee is hereby granted, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 # provided that the above copyright notice appear in all copies and that |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 # both that copyright notice and this permission notice appear in |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 # supporting documentation, and that the name of Vinay Sajip |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 # not be used in advertising or publicity pertaining to distribution |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 # of the software without specific, written prior permission. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 # VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 # VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 # IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 Logging package for Python. Based on PEP 282 and comments thereto in |
|
75211
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
19 comp.lang.python. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 |
|
75211
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
21 Copyright (C) 2001-2012 Vinay Sajip. All Rights Reserved. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 To use, simply 'import logging' and log away! |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
26 import sys, os, time, io, traceback, warnings, weakref |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
27 from string import Template |
|
50074
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
28 |
|
45377
1872bd6cf4b4
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60873 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44914
diff
changeset
|
29 __all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR', |
|
53505
17540a164797
Issue #5854: Updated __all__ to include some missing names and remove some names which should not be exported.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51740
diff
changeset
|
30 'FATAL', 'FileHandler', 'Filter', 'Formatter', 'Handler', 'INFO', |
|
17540a164797
Issue #5854: Updated __all__ to include some missing names and remove some names which should not be exported.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51740
diff
changeset
|
31 'LogRecord', 'Logger', 'LoggerAdapter', 'NOTSET', 'NullHandler', |
|
17540a164797
Issue #5854: Updated __all__ to include some missing names and remove some names which should not be exported.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51740
diff
changeset
|
32 'StreamHandler', 'WARN', 'WARNING', 'addLevelName', 'basicConfig', |
|
17540a164797
Issue #5854: Updated __all__ to include some missing names and remove some names which should not be exported.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51740
diff
changeset
|
33 'captureWarnings', 'critical', 'debug', 'disable', 'error', |
|
17540a164797
Issue #5854: Updated __all__ to include some missing names and remove some names which should not be exported.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51740
diff
changeset
|
34 'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass', |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
35 'info', 'log', 'makeLogRecord', 'setLoggerClass', 'warn', 'warning', |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
36 'getLogRecordFactory', 'setLogRecordFactory', 'lastResort'] |
|
34744
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
37 |
|
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
38 try: |
|
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
39 import codecs |
|
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
40 except ImportError: |
|
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
41 codecs = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 try: |
|
47266
7fe3a8648ce2
Rename thread to _thread and dummy_thread to _dummy_thread. Issue #2875.
Georg Brandl <georg@python.org>
parents:
45377
diff
changeset
|
44 import _thread as thread |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 import threading |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 except ImportError: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 thread = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 __author__ = "Vinay Sajip <vinay_sajip@red-dove.com>" |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
50 __status__ = "production" |
|
59142
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
51 __version__ = "0.5.1.2" |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
52 __date__ = "07 February 2010" |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
55 # Miscellaneous module data |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 # |
|
34612
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
59 # _srcfile is used when walking the stack to check when we've got the first |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 # caller stack frame. |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
61 # |
|
35512
9516ba54b9df
Changed _srcfile determination to support py2exe.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34858
diff
changeset
|
62 if hasattr(sys, 'frozen'): #support for py2exe |
|
9516ba54b9df
Changed _srcfile determination to support py2exe.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34858
diff
changeset
|
63 _srcfile = "logging%s__init__%s" % (os.sep, __file__[-4:]) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 else: |
|
26184
3e59d674b8c3
Get rid of #! lines, references to usage as __main__, README.txt, and
Guido van Rossum <guido@python.org>
parents:
26183
diff
changeset
|
65 _srcfile = __file__ |
|
3e59d674b8c3
Get rid of #! lines, references to usage as __main__, README.txt, and
Guido van Rossum <guido@python.org>
parents:
26183
diff
changeset
|
66 _srcfile = os.path.normcase(_srcfile) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
67 |
|
34612
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
68 # next bit filched from 1.5.2's inspect.py |
|
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
69 def currentframe(): |
|
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
70 """Return the frame object for the caller's stack frame.""" |
|
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
71 try: |
|
35749
17828a00a454
Don't use a string exception since it's deprecated
Neal Norwitz <nnorwitz@gmail.com>
parents:
35721
diff
changeset
|
72 raise Exception |
|
34612
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
73 except: |
|
41969
9d02a4adf574
Merged revisions 55631-55794 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41480
diff
changeset
|
74 return sys.exc_info()[2].tb_frame.f_back |
|
34612
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
75 |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40644
diff
changeset
|
76 if hasattr(sys, '_getframe'): currentframe = lambda: sys._getframe(3) |
|
34612
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
77 # done filching |
|
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
78 |
|
27349
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
79 # _srcfile is only used in conjunction with sys._getframe(). |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
80 # To provide compatibility with older versions of Python, set _srcfile |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
81 # to None if _getframe() is not available; this value will prevent |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
82 # findCaller() from being called. |
|
34612
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
83 #if not hasattr(sys, "_getframe"): |
|
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
84 # _srcfile = None |
|
27349
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
85 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 #_startTime is used as the base when calculating the relative time of events |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 _startTime = time.time() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 #raiseExceptions is used to see if exceptions during handling should be |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 #propagated |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
94 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
95 raiseExceptions = 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
96 |
|
36974
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
97 # |
|
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
98 # If you don't want threading information in the log, set this to zero |
|
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
99 # |
|
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
100 logThreads = 1 |
|
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
101 |
|
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
102 # |
| 50883 | 103 # If you don't want multiprocessing information in the log, set this to zero |
| 104 # | |
| 105 logMultiprocessing = 1 | |
| 106 | |
| 107 # | |
|
36974
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
108 # If you don't want process information in the log, set this to zero |
|
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
109 # |
|
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
110 logProcesses = 1 |
|
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
111 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
113 # Level related stuff |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
114 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
115 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
116 # Default levels and level names, these can be replaced with any positive set |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
117 # of values having corresponding names. There is a pseudo-level, NOTSET, which |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
118 # is only really there as a lower limit for user-defined levels. Handlers and |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
119 # loggers are initialized with NOTSET so that they will log all messages, even |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
120 # at user-defined levels. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
121 # |
|
34744
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
122 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 CRITICAL = 50 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
124 FATAL = CRITICAL |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
125 ERROR = 40 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
126 WARNING = 30 |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
127 WARN = WARNING |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
128 INFO = 20 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
129 DEBUG = 10 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
130 NOTSET = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
131 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
132 _levelNames = { |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
133 CRITICAL : 'CRITICAL', |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
134 ERROR : 'ERROR', |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
135 WARNING : 'WARNING', |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
136 INFO : 'INFO', |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
137 DEBUG : 'DEBUG', |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
138 NOTSET : 'NOTSET', |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
139 'CRITICAL' : CRITICAL, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
140 'ERROR' : ERROR, |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
141 'WARN' : WARNING, |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
142 'WARNING' : WARNING, |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
143 'INFO' : INFO, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
144 'DEBUG' : DEBUG, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
145 'NOTSET' : NOTSET, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
146 } |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
147 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
148 def getLevelName(level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
149 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
150 Return the textual representation of logging level 'level'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
151 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
152 If the level is one of the predefined levels (CRITICAL, ERROR, WARNING, |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
153 INFO, DEBUG) then you get the corresponding string. If you have |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
154 associated levels with names using addLevelName then the name you have |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
155 associated with 'level' is returned. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
156 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
157 If a numeric value corresponding to one of the defined levels is passed |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
158 in, the corresponding string representation is returned. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
159 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
160 Otherwise, the string "Level %s" % level is returned. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
161 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
162 return _levelNames.get(level, ("Level %s" % level)) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
163 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
164 def addLevelName(level, levelName): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
165 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
166 Associate 'levelName' with 'level'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
167 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
168 This is used when converting levels to text during message formatting. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
169 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
170 _acquireLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
171 try: #unlikely to cause an exception, but you never know... |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
172 _levelNames[level] = levelName |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
173 _levelNames[levelName] = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
174 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
175 _releaseLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
176 |
|
55242
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
177 def _checkLevel(level): |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
178 if isinstance(level, int): |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
179 rv = level |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
180 elif str(level) == level: |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
181 if level not in _levelNames: |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
182 raise ValueError("Unknown level: %r" % level) |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
183 rv = _levelNames[level] |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
184 else: |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
185 raise TypeError("Level not an integer or a valid string: %r" % level) |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
186 return rv |
|
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
187 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
188 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
189 # Thread-related stuff |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
190 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
191 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
192 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
193 #_lock is used to serialize access to shared data structures in this module. |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
194 #This needs to be an RLock because fileConfig() creates and configures |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
195 #Handlers, and so might arbitrary user threads. Since Handler code updates the |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
196 #shared dictionary _handlers, it needs to acquire the lock. But if configuring, |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
197 #the lock would already have been acquired - so we need an RLock. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
198 #The same argument applies to Loggers and Manager.loggerDict. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
199 # |
|
57476
726d12dba1f6
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
57449
diff
changeset
|
200 if thread: |
|
726d12dba1f6
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
57449
diff
changeset
|
201 _lock = threading.RLock() |
|
726d12dba1f6
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
57449
diff
changeset
|
202 else: |
|
726d12dba1f6
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
57449
diff
changeset
|
203 _lock = None |
|
726d12dba1f6
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
57449
diff
changeset
|
204 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
205 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
206 def _acquireLock(): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
207 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
208 Acquire the module-level lock for serializing access to shared data. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
209 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
210 This should be released with _releaseLock(). |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
211 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
212 if _lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
213 _lock.acquire() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
214 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
215 def _releaseLock(): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
216 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
217 Release the module-level lock acquired by calling _acquireLock(). |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
218 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
219 if _lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
220 _lock.release() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
221 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
222 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
223 # The logging record |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
224 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
225 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
226 class LogRecord(object): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
227 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
228 A LogRecord instance represents an event being logged. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
229 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
230 LogRecord instances are created every time something is logged. They |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
231 contain all the information pertinent to the event being logged. The |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
232 main information passed in is in msg and args, which are combined |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
233 using str(msg) % args to create the message field of the record. The |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
234 record also includes information such as when the record was created, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
235 the source line where the logging call was made, and any exception |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
236 information to be logged. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
237 """ |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
238 def __init__(self, name, level, pathname, lineno, |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
239 msg, args, exc_info, func=None, sinfo=None, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
240 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
241 Initialize a logging record with interesting information. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
242 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
243 ct = time.time() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
244 self.name = name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
245 self.msg = msg |
|
33807
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
246 # |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
247 # The following statement allows passing of a dictionary as a sole |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
248 # argument, so that you can do something like |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
249 # logging.debug("a %(a)d b %(b)s", {'a':1, 'b':2}) |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
250 # Suggested by Stefan Behnel. |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
251 # Note that without the test for args[0], we get a problem because |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
252 # during formatting, we test to see if the arg is present using |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
253 # 'if self.args:'. If the event being logged is e.g. 'Value is %d' |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
254 # and if the passed arg fails 'if self.args:' then no formatting |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
255 # is done. For example, logger.warn('Value is %d', 0) would log |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
256 # 'Value is %d' instead of 'Value is 0'. |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
257 # For the use case of passing a dictionary, this should not be a |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
258 # problem. |
|
43734
3e5edf19d5f0
Merged revisions 58221-58741 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
43577
diff
changeset
|
259 if args and len(args) == 1 and isinstance(args[0], dict) and args[0]: |
|
33807
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
260 args = args[0] |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
261 self.args = args |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
262 self.levelname = getLevelName(level) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
263 self.levelno = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
264 self.pathname = pathname |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
265 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
266 self.filename = os.path.basename(pathname) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
267 self.module = os.path.splitext(self.filename)[0] |
|
40582
67287ca4e1e8
Merged revisions 53005-53303 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40450
diff
changeset
|
268 except (TypeError, ValueError, AttributeError): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
269 self.filename = pathname |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
270 self.module = "Unknown module" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
271 self.exc_info = exc_info |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
272 self.exc_text = None # used to cache the traceback text |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
273 self.stack_info = sinfo |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
274 self.lineno = lineno |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
275 self.funcName = func |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
276 self.created = ct |
|
40644
1c26505c1de6
Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents:
40643
diff
changeset
|
277 self.msecs = (ct - int(ct)) * 1000 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
278 self.relativeCreated = (self.created - _startTime) * 1000 |
|
36974
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
279 if logThreads and thread: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
280 self.thread = thread.get_ident() |
|
48747
1fdfa382ae13
Merged revisions 65824 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48321
diff
changeset
|
281 self.threadName = threading.current_thread().name |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
282 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
283 self.thread = None |
|
34858
2ea3d6915204
Added threadName and now using re-entrant lock
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34744
diff
changeset
|
284 self.threadName = None |
|
56368
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
285 if not logMultiprocessing: |
|
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
286 self.processName = None |
| 50883 | 287 else: |
|
56548
d9630517c70c
Issue #7120: logging: Removed import of multiprocessing which is causing crash in GAE.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56442
diff
changeset
|
288 self.processName = 'MainProcess' |
|
60506
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
289 mp = sys.modules.get('multiprocessing') |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
290 if mp is not None: |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
291 # Errors may occur if multiprocessing has not finished loading |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
292 # yet - e.g. if a custom import hook causes third-party code |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
293 # to run when multiprocessing calls import. See issue 8200 |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
294 # for an example |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
295 try: |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
296 self.processName = mp.current_process().name |
|
74613
e506848d6381
Closes #13859: Replaced reference to StandardError with reference to Exception. Thanks to Matt Joiner for spotting this and submitting a patch.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74539
diff
changeset
|
297 except Exception: |
|
60506
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
298 pass |
|
36974
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
299 if logProcesses and hasattr(os, 'getpid'): |
|
28019
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
300 self.process = os.getpid() |
|
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
301 else: |
|
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
302 self.process = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
303 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
304 def __str__(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
305 return '<LogRecord: %s, %s, %s, %s, "%s">'%(self.name, self.levelno, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
306 self.pathname, self.lineno, self.msg) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
307 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
308 def getMessage(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
309 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
310 Return the message for this LogRecord. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
311 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
312 Return the message for this LogRecord after merging any user-supplied |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
313 arguments with the message. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
314 """ |
|
64327
08f7ae10cc79
Removed _unicode variable which is always False in Python 3.x.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64325
diff
changeset
|
315 msg = str(self.msg) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
316 if self.args: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
317 msg = msg % self.args |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
318 return msg |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
319 |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
320 # |
|
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
321 # Determine which class to use when instantiating log records. |
|
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
322 # |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
323 _logRecordFactory = LogRecord |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
324 |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
325 def setLogRecordFactory(factory): |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
326 """ |
|
66640
94fa53b58ee5
logging: tidied up some docstrings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66638
diff
changeset
|
327 Set the factory to be used when instantiating a log record. |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
328 |
|
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
329 :param factory: A callable which will be called to instantiate |
|
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
330 a log record. |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
331 """ |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
332 global _logRecordFactory |
|
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
333 _logRecordFactory = factory |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
334 |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
335 def getLogRecordFactory(): |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
336 """ |
|
66640
94fa53b58ee5
logging: tidied up some docstrings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66638
diff
changeset
|
337 Return the factory to be used when instantiating a log record. |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
338 """ |
|
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
339 |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
340 return _logRecordFactory |
|
65541
ad8923760d5c
logging: Added _logRecordClass, getLogRecordClass, setLogRecordClass to increase flexibility of LogRecord creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65214
diff
changeset
|
341 |
|
29624
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
342 def makeLogRecord(dict): |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
343 """ |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
344 Make a LogRecord whose attributes are defined by the specified dictionary, |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
345 This function is useful for converting a logging event received over |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
346 a socket connection (which is sent as a dictionary) into a LogRecord |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
347 instance. |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
348 """ |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
349 rv = _logRecordFactory(None, None, "", 0, "", (), None, None) |
|
29624
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
350 rv.__dict__.update(dict) |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
351 return rv |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
352 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
353 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
354 # Formatter classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
355 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
356 |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
357 class PercentStyle(object): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
358 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
359 default_format = '%(message)s' |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
360 asctime_format = '%(asctime)s' |
|
68174
907d5b2ed5a1
Issue #11330: asctime format bug fixed.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66819
diff
changeset
|
361 asctime_search = '%(asctime)' |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
362 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
363 def __init__(self, fmt): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
364 self._fmt = fmt or self.default_format |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
365 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
366 def usesTime(self): |
|
68174
907d5b2ed5a1
Issue #11330: asctime format bug fixed.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66819
diff
changeset
|
367 return self._fmt.find(self.asctime_search) >= 0 |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
368 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
369 def format(self, record): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
370 return self._fmt % record.__dict__ |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
371 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
372 class StrFormatStyle(PercentStyle): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
373 default_format = '{message}' |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
374 asctime_format = '{asctime}' |
|
68174
907d5b2ed5a1
Issue #11330: asctime format bug fixed.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66819
diff
changeset
|
375 asctime_search = '{asctime' |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
376 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
377 def format(self, record): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
378 return self._fmt.format(**record.__dict__) |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
379 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
380 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
381 class StringTemplateStyle(PercentStyle): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
382 default_format = '${message}' |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
383 asctime_format = '${asctime}' |
|
68181
6a8fa2e9b105
Issue #11330: Updated tests for correct asctime handling.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
68176
diff
changeset
|
384 asctime_search = '${asctime}' |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
385 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
386 def __init__(self, fmt): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
387 self._fmt = fmt or self.default_format |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
388 self._tpl = Template(self._fmt) |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
389 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
390 def usesTime(self): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
391 fmt = self._fmt |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
392 return fmt.find('$asctime') >= 0 or fmt.find(self.asctime_format) >= 0 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
393 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
394 def format(self, record): |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
395 return self._tpl.substitute(**record.__dict__) |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
396 |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
397 _STYLES = { |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
398 '%': PercentStyle, |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
399 '{': StrFormatStyle, |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
400 '$': StringTemplateStyle |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
401 } |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
402 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
403 class Formatter(object): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
404 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
405 Formatter instances are used to convert a LogRecord to text. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
406 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
407 Formatters need to know how a LogRecord is constructed. They are |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
408 responsible for converting a LogRecord to (usually) a string which can |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
409 be interpreted by either a human or an external system. The base Formatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
410 allows a formatting string to be specified. If none is supplied, the |
|
65560
e711b858617b
logging: Made StreamHandler terminator configurable.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65550
diff
changeset
|
411 default value of "%s(message)" is used. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
412 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
413 The Formatter can be initialized with a format string which makes use of |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
414 knowledge of the LogRecord attributes - e.g. the default value mentioned |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
415 above makes use of the fact that the user's message and arguments are pre- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
416 formatted into a LogRecord's message attribute. Currently, the useful |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
417 attributes in a LogRecord are described by: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
418 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
419 %(name)s Name of the logger (logging channel) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
420 %(levelno)s Numeric logging level for the message (DEBUG, INFO, |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
421 WARNING, ERROR, CRITICAL) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
422 %(levelname)s Text logging level for the message ("DEBUG", "INFO", |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
423 "WARNING", "ERROR", "CRITICAL") |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
424 %(pathname)s Full pathname of the source file where the logging |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
425 call was issued (if available) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
426 %(filename)s Filename portion of pathname |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
427 %(module)s Module (name portion of filename) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
428 %(lineno)d Source line number where the logging call was issued |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
429 (if available) |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
430 %(funcName)s Function name |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
431 %(created)f Time when the LogRecord was created (time.time() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
432 return value) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
433 %(asctime)s Textual time when the LogRecord was created |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
434 %(msecs)d Millisecond portion of the creation time |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
435 %(relativeCreated)d Time in milliseconds when the LogRecord was created, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
436 relative to the time the logging module was loaded |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
437 (typically at application startup time) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
438 %(thread)d Thread ID (if available) |
|
34858
2ea3d6915204
Added threadName and now using re-entrant lock
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34744
diff
changeset
|
439 %(threadName)s Thread name (if available) |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
440 %(process)d Process ID (if available) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
441 %(message)s The result of record.getMessage(), computed just as |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
442 the record is emitted |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
443 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
444 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
445 converter = time.localtime |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
446 |
|
65634
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
447 def __init__(self, fmt=None, datefmt=None, style='%'): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
448 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
449 Initialize the formatter with specified format strings. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
450 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
451 Initialize the formatter either with the specified format string, or a |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
452 default as described above. Allow for specialized date formatting with |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
453 the optional datefmt argument (if omitted, you get the ISO8601 format). |
|
65634
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
454 |
|
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
455 Use a style parameter of '%', '{' or '$' to specify that you want to |
|
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
456 use one of %-formatting, :meth:`str.format` (``{}``) formatting or |
|
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
457 :class:`string.Template` formatting in your format string. |
|
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
458 |
|
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
459 .. versionchanged: 3.2 |
|
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
460 Added the ``style`` parameter. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
461 """ |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
462 if style not in _STYLES: |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
463 raise ValueError('Style must be one of: %s' % ','.join( |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
464 _STYLES.keys())) |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
465 self._style = _STYLES[style](fmt) |
|
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
466 self._fmt = self._style._fmt |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
467 self.datefmt = datefmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
468 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
469 def formatTime(self, record, datefmt=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
470 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
471 Return the creation time of the specified LogRecord as formatted text. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
472 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
473 This method should be called from format() by a formatter which |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
474 wants to make use of a formatted time. This method can be overridden |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
475 in formatters to provide for any specific requirement, but the |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
476 basic behaviour is as follows: if datefmt (a string) is specified, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
477 it is used with time.strftime() to format the creation time of the |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
478 record. Otherwise, the ISO8601 format is used. The resulting |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
479 string is returned. This function uses a user-configurable function |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
480 to convert the creation time to a tuple. By default, time.localtime() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
481 is used; to change this for a particular formatter instance, set the |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
482 'converter' attribute to a function with the same signature as |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
483 time.localtime() or time.gmtime(). To change it for all formatters, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
484 for example if you want all logging times to be shown in GMT, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
485 set the 'converter' attribute in the Formatter class. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
486 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
487 ct = self.converter(record.created) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
488 if datefmt: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
489 s = time.strftime(datefmt, ct) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
490 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
491 t = time.strftime("%Y-%m-%d %H:%M:%S", ct) |
|
65634
3a9c3ec5e9d2
logging: Added style option to Formatter to allow %, {} or himBHformatting.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65560
diff
changeset
|
492 s = "%s,%03d" % (t, record.msecs) # the use of % here is internal |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
493 return s |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
494 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
495 def formatException(self, ei): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
496 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
497 Format and return the specified exception information as a string. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
498 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
499 This default implementation just uses |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
500 traceback.print_exception() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
501 """ |
|
42501
f6069f9dd52d
SF patch# 1770008 by Christian Heimes (plus some extras).
Guido van Rossum <guido@python.org>
parents:
42132
diff
changeset
|
502 sio = io.StringIO() |
|
64323
4743738ccafe
Improved logging.Formatter date/time formatting documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64247
diff
changeset
|
503 tb = ei[2] |
|
4743738ccafe
Improved logging.Formatter date/time formatting documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64247
diff
changeset
|
504 # See issues #9427, #1553375. Commented out for now. |
|
4743738ccafe
Improved logging.Formatter date/time formatting documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64247
diff
changeset
|
505 #if getattr(self, 'fullstack', False): |
|
4743738ccafe
Improved logging.Formatter date/time formatting documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64247
diff
changeset
|
506 # traceback.print_stack(tb.tb_frame.f_back, file=sio) |
|
4743738ccafe
Improved logging.Formatter date/time formatting documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64247
diff
changeset
|
507 traceback.print_exception(ei[0], ei[1], tb, None, sio) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
508 s = sio.getvalue() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
509 sio.close() |
|
42132
863ed7cd45dc
Merged revisions 56020-56124 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41986
diff
changeset
|
510 if s[-1:] == "\n": |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
511 s = s[:-1] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
512 return s |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
513 |
|
59600
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
514 def usesTime(self): |
|
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
515 """ |
|
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
516 Check if the format uses the creation time of the record. |
|
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
517 """ |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
518 return self._style.usesTime() |
|
59600
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
519 |
|
65635
2352e5e44053
logging: Formatter implementation tweak.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65634
diff
changeset
|
520 def formatMessage(self, record): |
|
65647
841892e271f7
logging: Improved Formatter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65635
diff
changeset
|
521 return self._style.format(record) |
|
65635
2352e5e44053
logging: Formatter implementation tweak.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65634
diff
changeset
|
522 |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
523 def formatStack(self, stack_info): |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
524 """ |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
525 This method is provided as an extension point for specialized |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
526 formatting of stack information. |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
527 |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
528 The input data is a string as returned from a call to |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
529 :func:`traceback.print_stack`, but with the last trailing newline |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
530 removed. |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
531 |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
532 The base implementation just returns the value passed in. |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
533 """ |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
534 return stack_info |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
535 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
536 def format(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
537 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
538 Format the specified record as text. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
539 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
540 The record's attribute dictionary is used as the operand to a |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
541 string formatting operation which yields the returned string. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
542 Before formatting the dictionary, a couple of preparatory steps |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
543 are carried out. The message attribute of the record is computed |
|
59600
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
544 using LogRecord.getMessage(). If the formatting string uses the |
|
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
545 time (as determined by a call to usesTime(), formatTime() is |
|
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
546 called to format the event time. If there is exception information, |
|
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
547 it is formatted using formatException() and appended to the message. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
548 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
549 record.message = record.getMessage() |
|
59600
9696932ad827
Merged revisions 77967,77969,77973,77979,77985-77986,78009,78029,78031-78033,78081,78085,78103,78105-78106,78108,78246,78703,78728,78731,78853,78855 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59142
diff
changeset
|
550 if self.usesTime(): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
551 record.asctime = self.formatTime(record, self.datefmt) |
|
65635
2352e5e44053
logging: Formatter implementation tweak.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65634
diff
changeset
|
552 s = self.formatMessage(record) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
553 if record.exc_info: |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
554 # Cache the traceback text to avoid converting it multiple times |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
555 # (it's constant anyway) |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
556 if not record.exc_text: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
557 record.exc_text = self.formatException(record.exc_info) |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
558 if record.exc_text: |
|
42132
863ed7cd45dc
Merged revisions 56020-56124 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41986
diff
changeset
|
559 if s[-1:] != "\n": |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
560 s = s + "\n" |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
561 s = s + record.exc_text |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
562 if record.stack_info: |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
563 if s[-1:] != "\n": |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
564 s = s + "\n" |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
565 s = s + self.formatStack(record.stack_info) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
566 return s |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
567 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
568 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
569 # The default formatter to use when no other is specified |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
570 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
571 _defaultFormatter = Formatter() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
572 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
573 class BufferingFormatter(object): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
574 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
575 A formatter suitable for formatting a number of records. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
576 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
577 def __init__(self, linefmt=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
578 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
579 Optionally specify a formatter which will be used to format each |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
580 individual record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
581 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
582 if linefmt: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
583 self.linefmt = linefmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
584 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
585 self.linefmt = _defaultFormatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
586 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
587 def formatHeader(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
588 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
589 Return the header string for the specified records. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
590 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
591 return "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
592 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
593 def formatFooter(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
594 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
595 Return the footer string for the specified records. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
596 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
597 return "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
598 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
599 def format(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
600 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
601 Format the specified records and return the result as a string. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
602 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
603 rv = "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
604 if len(records) > 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
605 rv = rv + self.formatHeader(records) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
606 for record in records: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
607 rv = rv + self.linefmt.format(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
608 rv = rv + self.formatFooter(records) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
609 return rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
610 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
611 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
612 # Filter classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
613 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
614 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
615 class Filter(object): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
616 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
617 Filter instances are used to perform arbitrary filtering of LogRecords. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
618 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
619 Loggers and Handlers can optionally use Filter instances to filter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
620 records as desired. The base filter class only allows events which are |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
621 below a certain point in the logger hierarchy. For example, a filter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
622 initialized with "A.B" will allow events logged by loggers "A.B", |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
623 "A.B.C", "A.B.C.D", "A.B.D" etc. but not "A.BB", "B.A.B" etc. If |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
624 initialized with the empty string, all events are passed. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
625 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
626 def __init__(self, name=''): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
627 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
628 Initialize a filter. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
629 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
630 Initialize with the name of the logger which, together with its |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
631 children, will have its events allowed through the filter. If no |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
632 name is specified, allow every event. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
633 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
634 self.name = name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
635 self.nlen = len(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
636 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
637 def filter(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
638 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
639 Determine if the specified record is to be logged. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
640 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
641 Is the specified record to be logged? Returns 0 for no, nonzero for |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
642 yes. If deemed appropriate, the record may be modified in-place. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
643 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
644 if self.nlen == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
645 return 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
646 elif self.name == record.name: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
647 return 1 |
|
41480
99027c2b3fd2
Remove functions in string module that are also string methods. Also remove:
Neal Norwitz <nnorwitz@gmail.com>
parents:
40893
diff
changeset
|
648 elif record.name.find(self.name, 0, self.nlen) != 0: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
649 return 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
650 return (record.name[self.nlen] == ".") |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
651 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
652 class Filterer(object): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
653 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
654 A base class for loggers and handlers which allows them to share |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
655 common code. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
656 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
657 def __init__(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
658 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
659 Initialize the list of filters to be an empty list. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
660 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
661 self.filters = [] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
662 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
663 def addFilter(self, filter): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
664 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
665 Add the specified filter to this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
666 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
667 if not (filter in self.filters): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
668 self.filters.append(filter) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
669 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
670 def removeFilter(self, filter): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
671 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
672 Remove the specified filter from this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
673 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
674 if filter in self.filters: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
675 self.filters.remove(filter) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
676 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
677 def filter(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
678 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
679 Determine if a record is loggable by consulting all the filters. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
680 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
681 The default is to allow the record to be logged; any filter can veto |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
682 this and the record is then dropped. Returns a zero value if a record |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
683 is to be dropped, else non-zero. |
|
65547
e11ac30199b1
logging: Allowed filters to be just callables.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65546
diff
changeset
|
684 |
|
e11ac30199b1
logging: Allowed filters to be just callables.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65546
diff
changeset
|
685 .. versionchanged: 3.2 |
|
e11ac30199b1
logging: Allowed filters to be just callables.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65546
diff
changeset
|
686 |
|
e11ac30199b1
logging: Allowed filters to be just callables.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65546
diff
changeset
|
687 Allow filters to be just callables. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
688 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
689 rv = 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
690 for f in self.filters: |
|
65547
e11ac30199b1
logging: Allowed filters to be just callables.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65546
diff
changeset
|
691 if hasattr(f, 'filter'): |
|
e11ac30199b1
logging: Allowed filters to be just callables.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65546
diff
changeset
|
692 result = f.filter(record) |
|
e11ac30199b1
logging: Allowed filters to be just callables.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65546
diff
changeset
|
693 else: |
|
65550
962e1f4c9c00
logging: Documented usage of callables as filters.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65547
diff
changeset
|
694 result = f(record) # assume callable - will raise if not |
|
65547
e11ac30199b1
logging: Allowed filters to be just callables.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65546
diff
changeset
|
695 if not result: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
696 rv = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
697 break |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
698 return rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
699 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
700 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
701 # Handler classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
702 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
703 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
704 _handlers = weakref.WeakValueDictionary() #map of handler names to handlers |
|
35526
336b664a2210
Added _handlerList to allow shutdown to flush and close handlers in reverse order of creation (see SF# 1282539)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35512
diff
changeset
|
705 _handlerList = [] # added to allow handlers to be removed in reverse of order initialized |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
706 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
707 def _removeHandlerRef(wr): |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
708 """ |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
709 Remove a handler reference from the internal cleanup list. |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
710 """ |
|
64247
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
711 # This function can be called during module teardown, when globals are |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
712 # set to None. If _acquireLock is None, assume this is the case and do |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
713 # nothing. |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
714 if _acquireLock is not None: |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
715 _acquireLock() |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
716 try: |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
717 if wr in _handlerList: |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
718 _handlerList.remove(wr) |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
719 finally: |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
720 _releaseLock() |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
721 |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
722 def _addHandlerRef(handler): |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
723 """ |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
724 Add a handler to the internal cleanup list using a weak reference. |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
725 """ |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
726 _acquireLock() |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
727 try: |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
728 _handlerList.append(weakref.ref(handler, _removeHandlerRef)) |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
729 finally: |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
730 _releaseLock() |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
731 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
732 class Handler(Filterer): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
733 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
734 Handler instances dispatch logging events to specific destinations. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
735 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
736 The base handler class. Acts as a placeholder which defines the Handler |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
737 interface. Handlers can optionally use Formatter instances to format |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
738 records as desired. By default, no formatter is specified; in this case, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
739 the 'raw' message as determined by record.message is logged. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
740 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
741 def __init__(self, level=NOTSET): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
742 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
743 Initializes the instance - basically setting the formatter to None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
744 and the filter list to empty. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
745 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
746 Filterer.__init__(self) |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
747 self._name = None |
|
55242
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
748 self.level = _checkLevel(level) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
749 self.formatter = None |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
750 # Add the handler to the global _handlerList (for cleanup on shutdown) |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
751 _addHandlerRef(self) |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
752 self.createLock() |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
753 |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
754 def get_name(self): |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
755 return self._name |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
756 |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
757 def set_name(self, name): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
758 _acquireLock() |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
759 try: |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
760 if self._name in _handlers: |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
761 del _handlers[self._name] |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
762 self._name = name |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
763 if name: |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
764 _handlers[name] = self |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
765 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
766 _releaseLock() |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
767 |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
768 name = property(get_name, set_name) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
769 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
770 def createLock(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
771 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
772 Acquire a thread lock for serializing access to the underlying I/O. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
773 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
774 if thread: |
|
34858
2ea3d6915204
Added threadName and now using re-entrant lock
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34744
diff
changeset
|
775 self.lock = threading.RLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
776 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
777 self.lock = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
778 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
779 def acquire(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
780 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
781 Acquire the I/O thread lock. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
782 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
783 if self.lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
784 self.lock.acquire() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
785 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
786 def release(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
787 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
788 Release the I/O thread lock. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
789 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
790 if self.lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
791 self.lock.release() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
792 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
793 def setLevel(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
794 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
795 Set the logging level of this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
796 """ |
|
55242
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
797 self.level = _checkLevel(level) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
798 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
799 def format(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
800 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
801 Format the specified record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
802 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
803 If a formatter is set, use it. Otherwise, use the default formatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
804 for the module. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
805 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
806 if self.formatter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
807 fmt = self.formatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
808 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
809 fmt = _defaultFormatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
810 return fmt.format(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
811 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
812 def emit(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
813 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
814 Do whatever it takes to actually log the specified logging record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
815 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
816 This version is intended to be implemented by subclasses and so |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
817 raises a NotImplementedError. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
818 """ |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42775
diff
changeset
|
819 raise NotImplementedError('emit must be implemented ' |
|
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42775
diff
changeset
|
820 'by Handler subclasses') |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
821 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
822 def handle(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
823 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
824 Conditionally emit the specified logging record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
825 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
826 Emission depends on filters which may have been added to the handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
827 Wrap the actual emission of the record with acquisition/release of |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
828 the I/O thread lock. Returns whether the filter passed the record for |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
829 emission. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
830 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
831 rv = self.filter(record) |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
832 if rv: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
833 self.acquire() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
834 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
835 self.emit(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
836 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
837 self.release() |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
838 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
839 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
840 def setFormatter(self, fmt): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
841 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
842 Set the formatter for this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
843 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
844 self.formatter = fmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
845 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
846 def flush(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
847 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
848 Ensure all logging output has been flushed. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
849 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
850 This version does nothing and is intended to be implemented by |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
851 subclasses. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
852 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
853 pass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
854 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
855 def close(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
856 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
857 Tidy up any resources used by the handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
858 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
859 This version removes the handler from an internal map of handlers, |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
860 _handlers, which is used for handler lookup by name. Subclasses |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
861 should ensure that this gets called from overridden close() |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
862 methods. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
863 """ |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
864 #get the module data lock, as we're updating a shared structure. |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
865 _acquireLock() |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
866 try: #unlikely to raise an exception, but you never know... |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
867 if self._name and self._name in _handlers: |
|
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
868 del _handlers[self._name] |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
869 finally: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
870 _releaseLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
871 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
872 def handleError(self, record): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
873 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
874 Handle errors which occur during an emit() call. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
875 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
876 This method should be called from handlers when an exception is |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
877 encountered during an emit() call. If raiseExceptions is false, |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
878 exceptions get silently ignored. This is what is mostly wanted |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
879 for a logging system - most users will not care about errors in |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
880 the logging system, they are more interested in application errors. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
881 You could, however, replace this with a custom handler if you wish. |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
882 The record which was being processed is passed in to this method. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
883 """ |
|
74538
73dad4940b88
Closes #13807: Now checks for sys.stderr being there before writing to it.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
68335
diff
changeset
|
884 if raiseExceptions and sys.stderr: # see issue 13807 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
885 ei = sys.exc_info() |
|
54501
ced380b40004
Merged revisions 72506,72525-72526,72551,72558,72616,72654-72655,72689,72745,72750,72802,72812,72822,72824,72826-72827,72833,72876,72890,72923,72946,73026,73042,73045,73047,73065,73068-73069 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
53920
diff
changeset
|
886 try: |
|
59142
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
887 traceback.print_exception(ei[0], ei[1], ei[2], |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
888 None, sys.stderr) |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
889 sys.stderr.write('Logged from file %s, line %s\n' % ( |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
890 record.filename, record.lineno)) |
|
54501
ced380b40004
Merged revisions 72506,72525-72526,72551,72558,72616,72654-72655,72689,72745,72750,72802,72812,72822,72824,72826-72827,72833,72876,72890,72923,72946,73026,73042,73045,73047,73065,73068-73069 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
53920
diff
changeset
|
891 except IOError: |
|
ced380b40004
Merged revisions 72506,72525-72526,72551,72558,72616,72654-72655,72689,72745,72750,72802,72812,72822,72824,72826-72827,72833,72876,72890,72923,72946,73026,73042,73045,73047,73065,73068-73069 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
53920
diff
changeset
|
892 pass # see issue 5971 |
|
ced380b40004
Merged revisions 72506,72525-72526,72551,72558,72616,72654-72655,72689,72745,72750,72802,72812,72822,72824,72826-72827,72833,72876,72890,72923,72946,73026,73042,73045,73047,73065,73068-73069 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
53920
diff
changeset
|
893 finally: |
|
ced380b40004
Merged revisions 72506,72525-72526,72551,72558,72616,72654-72655,72689,72745,72750,72802,72812,72822,72824,72826-72827,72833,72876,72890,72923,72946,73026,73042,73045,73047,73065,73068-73069 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
53920
diff
changeset
|
894 del ei |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
895 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
896 class StreamHandler(Handler): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
897 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
898 A handler class which writes logging records, appropriately formatted, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
899 to a stream. Note that this class does not close the stream, as |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
900 sys.stdout or sys.stderr may be used. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
901 """ |
|
48946
3b9608118f8d
Merged revisions 66045,66048-66049,66053,66060,66062-66063,66065,66067,66071-66074,66080,66082-66083,66090-66093,66097-66099,66103,66105,66110,66118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48747
diff
changeset
|
902 |
|
65560
e711b858617b
logging: Made StreamHandler terminator configurable.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65550
diff
changeset
|
903 terminator = '\n' |
|
e711b858617b
logging: Made StreamHandler terminator configurable.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65550
diff
changeset
|
904 |
|
56368
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
905 def __init__(self, stream=None): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
906 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
907 Initialize the handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
908 |
|
56368
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
909 If stream is not specified, sys.stderr is used. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
910 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
911 Handler.__init__(self) |
|
56368
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
912 if stream is None: |
|
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
913 stream = sys.stderr |
|
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
914 self.stream = stream |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
915 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
916 def flush(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
917 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
918 Flushes the stream. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
919 """ |
|
75221
344b4737d2fe
Fix added for recent changes in non-threading environments.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75211
diff
changeset
|
920 self.acquire() |
|
344b4737d2fe
Fix added for recent changes in non-threading environments.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75211
diff
changeset
|
921 try: |
|
75211
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
922 if self.stream and hasattr(self.stream, "flush"): |
|
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
923 self.stream.flush() |
|
75221
344b4737d2fe
Fix added for recent changes in non-threading environments.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75211
diff
changeset
|
924 finally: |
|
344b4737d2fe
Fix added for recent changes in non-threading environments.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75211
diff
changeset
|
925 self.release() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
926 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
927 def emit(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
928 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
929 Emit a record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
930 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
931 If a formatter is specified, it is used to format the record. |
|
48946
3b9608118f8d
Merged revisions 66045,66048-66049,66053,66060,66062-66063,66065,66067,66071-66074,66080,66082-66083,66090-66093,66097-66099,66103,66105,66110,66118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48747
diff
changeset
|
932 The record is then written to the stream with a trailing newline. If |
|
3b9608118f8d
Merged revisions 66045,66048-66049,66053,66060,66062-66063,66065,66067,66071-66074,66080,66082-66083,66090-66093,66097-66099,66103,66105,66110,66118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48747
diff
changeset
|
933 exception information is present, it is formatted using |
|
3b9608118f8d
Merged revisions 66045,66048-66049,66053,66060,66062-66063,66065,66067,66071-66074,66080,66082-66083,66090-66093,66097-66099,66103,66105,66110,66118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48747
diff
changeset
|
934 traceback.print_exception and appended to the stream. If the stream |
|
53920
7a9e081ece4c
Merged revisions 70768,71657,71721,71729,71794,71976,72036-72037,72079,72085,72131-72134,72191,72197-72198,72219,72221,72225,72303,72434,72467,72476 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
53505
diff
changeset
|
935 has an 'encoding' attribute, it is used to determine how to do the |
|
48946
3b9608118f8d
Merged revisions 66045,66048-66049,66053,66060,66062-66063,66065,66067,66071-66074,66080,66082-66083,66090-66093,66097-66099,66103,66105,66110,66118 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48747
diff
changeset
|
936 output to the stream. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
937 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
938 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
939 msg = self.format(record) |
|
51579
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
50954
diff
changeset
|
940 stream = self.stream |
|
65560
e711b858617b
logging: Made StreamHandler terminator configurable.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65550
diff
changeset
|
941 stream.write(msg) |
|
e711b858617b
logging: Made StreamHandler terminator configurable.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65550
diff
changeset
|
942 stream.write(self.terminator) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
943 self.flush() |
|
35816
a000f322dd05
Exception handling now raises KeyboardInterrupt and SystemExit rather than passing to handleError
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35787
diff
changeset
|
944 except (KeyboardInterrupt, SystemExit): |
|
a000f322dd05
Exception handling now raises KeyboardInterrupt and SystemExit rather than passing to handleError
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35787
diff
changeset
|
945 raise |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
946 except: |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
947 self.handleError(record) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
948 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
949 class FileHandler(StreamHandler): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
950 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
951 A handler class which writes formatted logging records to disk files. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
952 """ |
|
44914
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
953 def __init__(self, filename, mode='a', encoding=None, delay=0): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
954 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
955 Open the specified file and use it as the stream for logging. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
956 """ |
|
40643
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
957 #keep the absolute path, otherwise derived classes which use this |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
958 #may come a cropper when the current directory changes |
|
34744
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
959 if codecs is None: |
|
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
960 encoding = None |
|
32546
d42749db9339
FileHandler now stores the basename as an absolute path (fix for SF #982049)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32528
diff
changeset
|
961 self.baseFilename = os.path.abspath(filename) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
962 self.mode = mode |
|
40643
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
963 self.encoding = encoding |
|
44914
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
964 if delay: |
|
50954
66928dad81ca
Issue 5013: Fixed bug in FileHandler when delay was set - added fix for RotatingFileHandler and changed header comment slightly.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50883
diff
changeset
|
965 #We don't open the stream, but we still need to call the |
|
66928dad81ca
Issue 5013: Fixed bug in FileHandler when delay was set - added fix for RotatingFileHandler and changed header comment slightly.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50883
diff
changeset
|
966 #Handler constructor to set level, formatter, lock etc. |
|
66928dad81ca
Issue 5013: Fixed bug in FileHandler when delay was set - added fix for RotatingFileHandler and changed header comment slightly.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50883
diff
changeset
|
967 Handler.__init__(self) |
|
44914
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
968 self.stream = None |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
969 else: |
|
50954
66928dad81ca
Issue 5013: Fixed bug in FileHandler when delay was set - added fix for RotatingFileHandler and changed header comment slightly.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50883
diff
changeset
|
970 StreamHandler.__init__(self, self._open()) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
971 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
972 def close(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
973 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
974 Closes the stream. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
975 """ |
|
75221
344b4737d2fe
Fix added for recent changes in non-threading environments.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75211
diff
changeset
|
976 self.acquire() |
|
344b4737d2fe
Fix added for recent changes in non-threading environments.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75211
diff
changeset
|
977 try: |
|
75211
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
978 if self.stream: |
|
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
979 self.flush() |
|
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
980 if hasattr(self.stream, "close"): |
|
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
981 self.stream.close() |
|
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
982 StreamHandler.close(self) |
|
b2adcd90e656
logging: Added locking in flush() and close() handler methods. Thanks to Fayaz Yusuf Khan for the suggestion.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
74814
diff
changeset
|
983 self.stream = None |
|
75221
344b4737d2fe
Fix added for recent changes in non-threading environments.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75211
diff
changeset
|
984 finally: |
|
344b4737d2fe
Fix added for recent changes in non-threading environments.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
75211
diff
changeset
|
985 self.release() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
986 |
|
40643
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
987 def _open(self): |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
988 """ |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
989 Open the current base file with the (original) mode and encoding. |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
990 Return the resulting stream. |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
991 """ |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
992 if self.encoding is None: |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
993 stream = open(self.baseFilename, self.mode) |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
994 else: |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
995 stream = codecs.open(self.baseFilename, self.mode, self.encoding) |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
996 return stream |
|
47f9efdc0855
Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40582
diff
changeset
|
997 |
|
44914
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
998 def emit(self, record): |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
999 """ |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
1000 Emit a record. |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
1001 |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
1002 If the stream was not opened because 'delay' was specified in the |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
1003 constructor, open it before calling the superclass's emit. |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
1004 """ |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
1005 if self.stream is None: |
|
50954
66928dad81ca
Issue 5013: Fixed bug in FileHandler when delay was set - added fix for RotatingFileHandler and changed header comment slightly.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50883
diff
changeset
|
1006 self.stream = self._open() |
|
44914
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
1007 StreamHandler.emit(self, record) |
|
c33f2779a938
Merged revisions 60234-60244 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44748
diff
changeset
|
1008 |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1009 class _StderrHandler(StreamHandler): |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1010 """ |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1011 This class is like a StreamHandler using sys.stderr, but always uses |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1012 whatever sys.stderr is currently set to rather than the value of |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1013 sys.stderr at handler construction time. |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1014 """ |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1015 def __init__(self, level=NOTSET): |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1016 """ |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1017 Initialize the handler. |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1018 """ |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1019 Handler.__init__(self, level) |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1020 |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1021 @property |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1022 def stream(self): |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1023 return sys.stderr |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1024 |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1025 |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1026 _defaultLastResort = _StderrHandler(WARNING) |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1027 lastResort = _defaultLastResort |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1028 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1029 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1030 # Manager classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1031 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1032 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
1033 class PlaceHolder(object): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1034 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1035 PlaceHolder instances are used in the Manager logger hierarchy to take |
|
31597
05e1c27c0a74
Minor documentation changes
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31575
diff
changeset
|
1036 the place of nodes for which no loggers have been defined. This class is |
|
05e1c27c0a74
Minor documentation changes
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31575
diff
changeset
|
1037 intended for internal use only and not as part of the public API. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1038 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1039 def __init__(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1040 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1041 Initialize with the specified logger being a child of this placeholder. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1042 """ |
|
35721
cda87357185f
Optimised Placeholders handling of child loggers by using a dict rather than a list (much slower in the pathological case of hundreds of child Loggers to a Placeholder - problem reported by Ryan Blazecka).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35703
diff
changeset
|
1043 self.loggerMap = { alogger : None } |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1044 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1045 def append(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1046 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1047 Add the specified logger as a child of this placeholder. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1048 """ |
|
39589
d240ce5696f9
More has_key() fixes.
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
1049 if alogger not in self.loggerMap: |
|
35721
cda87357185f
Optimised Placeholders handling of child loggers by using a dict rather than a list (much slower in the pathological case of hundreds of child Loggers to a Placeholder - problem reported by Ryan Blazecka).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35703
diff
changeset
|
1050 self.loggerMap[alogger] = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1051 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1052 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1053 # Determine which class to use when instantiating loggers. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1054 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1055 _loggerClass = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1056 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1057 def setLoggerClass(klass): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1058 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1059 Set the class to be used when instantiating a logger. The class should |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1060 define __init__() such that only a name argument is required, and the |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1061 __init__() should call Logger.__init__() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1062 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1063 if klass != Logger: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1064 if not issubclass(klass, Logger): |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42775
diff
changeset
|
1065 raise TypeError("logger not derived from logging.Logger: " |
|
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42775
diff
changeset
|
1066 + klass.__name__) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1067 global _loggerClass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1068 _loggerClass = klass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1069 |
|
33535
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1070 def getLoggerClass(): |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1071 """ |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1072 Return the class to be used when instantiating a logger. |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1073 """ |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1074 |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1075 return _loggerClass |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1076 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
1077 class Manager(object): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1078 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1079 There is [under normal circumstances] just one Manager instance, which |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1080 holds the hierarchy of loggers. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1081 """ |
|
26257
f23c35f81033
SF Patch #638825 logging module
Neal Norwitz <nnorwitz@gmail.com>
parents:
26184
diff
changeset
|
1082 def __init__(self, rootnode): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1083 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1084 Initialize the manager with the root node of the logger hierarchy. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1085 """ |
|
26257
f23c35f81033
SF Patch #638825 logging module
Neal Norwitz <nnorwitz@gmail.com>
parents:
26184
diff
changeset
|
1086 self.root = rootnode |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1087 self.disable = 0 |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1088 self.emittedNoHandlerWarning = False |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1089 self.loggerDict = {} |
|
59142
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1090 self.loggerClass = None |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
1091 self.logRecordFactory = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1092 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1093 def getLogger(self, name): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1094 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1095 Get a logger with the specified name (channel name), creating it |
|
33535
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1096 if it doesn't yet exist. This name is a dot-separated hierarchical |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
1097 name, such as "a", "a.b", "a.b.c" or similar. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1098 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1099 If a PlaceHolder existed for the specified name [i.e. the logger |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1100 didn't exist but a child of it did], replace it with the created |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1101 logger and fix up the parent/child references which pointed to the |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1102 placeholder to now point to the logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1103 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1104 rv = None |
|
73416
a3ba905447ba
Closes #13661: Check added for type of logger name.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
71919
diff
changeset
|
1105 if not isinstance(name, str): |
|
73419
bc05c11b340e
Closes #13361: Raise correct exception type.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
73416
diff
changeset
|
1106 raise TypeError('A logger name must be a string') |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1107 _acquireLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1108 try: |
|
39589
d240ce5696f9
More has_key() fixes.
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
1109 if name in self.loggerDict: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1110 rv = self.loggerDict[name] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1111 if isinstance(rv, PlaceHolder): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1112 ph = rv |
|
59142
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1113 rv = (self.loggerClass or _loggerClass)(name) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1114 rv.manager = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1115 self.loggerDict[name] = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1116 self._fixupChildren(ph, rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1117 self._fixupParents(rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1118 else: |
|
59142
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1119 rv = (self.loggerClass or _loggerClass)(name) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1120 rv.manager = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1121 self.loggerDict[name] = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1122 self._fixupParents(rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1123 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1124 _releaseLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1125 return rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1126 |
|
59142
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1127 def setLoggerClass(self, klass): |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1128 """ |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1129 Set the class to be used when instantiating a logger with this Manager. |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1130 """ |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1131 if klass != Logger: |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1132 if not issubclass(klass, Logger): |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1133 raise TypeError("logger not derived from logging.Logger: " |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1134 + klass.__name__) |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1135 self.loggerClass = klass |
|
e1bc0022b23b
Merged revisions 77967,77969,78033,78055,78081,78085,78108 via svnmerge from
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58758
diff
changeset
|
1136 |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
1137 def setLogRecordFactory(self, factory): |
|
65546
c47ef180be39
logging: Added tests for _logRecordClass changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65541
diff
changeset
|
1138 """ |
|
66640
94fa53b58ee5
logging: tidied up some docstrings.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66638
diff
changeset
|
1139 Set the factory to be used when instantiating a log record with this |
|
65546
c47ef180be39
logging: Added tests for _logRecordClass changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65541
diff
changeset
|
1140 Manager. |
|
c47ef180be39
logging: Added tests for _logRecordClass changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65541
diff
changeset
|
1141 """ |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
1142 self.logRecordFactory = factory |
|
65546
c47ef180be39
logging: Added tests for _logRecordClass changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65541
diff
changeset
|
1143 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1144 def _fixupParents(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1145 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1146 Ensure that there are either loggers or placeholders all the way |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1147 from the specified logger to the root of the logger hierarchy. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1148 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1149 name = alogger.name |
|
41480
99027c2b3fd2
Remove functions in string module that are also string methods. Also remove:
Neal Norwitz <nnorwitz@gmail.com>
parents:
40893
diff
changeset
|
1150 i = name.rfind(".") |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1151 rv = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1152 while (i > 0) and not rv: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1153 substr = name[:i] |
|
39589
d240ce5696f9
More has_key() fixes.
Guido van Rossum <guido@python.org>
parents:
38453
diff
changeset
|
1154 if substr not in self.loggerDict: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1155 self.loggerDict[substr] = PlaceHolder(alogger) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1156 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1157 obj = self.loggerDict[substr] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1158 if isinstance(obj, Logger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1159 rv = obj |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1160 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1161 assert isinstance(obj, PlaceHolder) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1162 obj.append(alogger) |
|
41480
99027c2b3fd2
Remove functions in string module that are also string methods. Also remove:
Neal Norwitz <nnorwitz@gmail.com>
parents:
40893
diff
changeset
|
1163 i = name.rfind(".", 0, i - 1) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1164 if not rv: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1165 rv = self.root |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1166 alogger.parent = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1167 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1168 def _fixupChildren(self, ph, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1169 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1170 Ensure that children of the placeholder ph are connected to the |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1171 specified logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1172 """ |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39648
diff
changeset
|
1173 name = alogger.name |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39648
diff
changeset
|
1174 namelen = len(name) |
|
35721
cda87357185f
Optimised Placeholders handling of child loggers by using a dict rather than a list (much slower in the pathological case of hundreds of child Loggers to a Placeholder - problem reported by Ryan Blazecka).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35703
diff
changeset
|
1175 for c in ph.loggerMap.keys(): |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39648
diff
changeset
|
1176 #The if means ... if not c.parent.name.startswith(nm) |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39648
diff
changeset
|
1177 if c.parent.name[:namelen] != name: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1178 alogger.parent = c.parent |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1179 c.parent = alogger |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1180 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1181 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1182 # Logger classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1183 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1184 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1185 class Logger(Filterer): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1186 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1187 Instances of the Logger class represent a single logging channel. A |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1188 "logging channel" indicates an area of an application. Exactly how an |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1189 "area" is defined is up to the application developer. Since an |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1190 application can have any number of areas, logging channels are identified |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1191 by a unique string. Application areas can be nested (e.g. an area |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1192 of "input processing" might include sub-areas "read CSV files", "read |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1193 XLS files" and "read Gnumeric files"). To cater for this natural nesting, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1194 channel names are organized into a namespace hierarchy where levels are |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1195 separated by periods, much like the Java or Python package namespace. So |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1196 in the instance given above, channel names might be "input" for the upper |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1197 level, and "input.csv", "input.xls" and "input.gnu" for the sub-levels. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1198 There is no arbitrary limit to the depth of nesting. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1199 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1200 def __init__(self, name, level=NOTSET): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1201 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1202 Initialize the logger with a name and an optional level. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1203 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1204 Filterer.__init__(self) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1205 self.name = name |
|
55242
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
1206 self.level = _checkLevel(level) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1207 self.parent = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1208 self.propagate = 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1209 self.handlers = [] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1210 self.disabled = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1211 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1212 def setLevel(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1213 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1214 Set the logging level of this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1215 """ |
|
55242
8ebb90dc3b04
Issue #6314: logging: Extra checks on the "level" argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
54807
diff
changeset
|
1216 self.level = _checkLevel(level) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1217 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1218 def debug(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1219 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1220 Log 'msg % args' with severity 'DEBUG'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1221 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1222 To pass exception information, use the keyword argument exc_info with |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1223 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1224 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1225 logger.debug("Houston, we have a %s", "thorny problem", exc_info=1) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1226 """ |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
1227 if self.isEnabledFor(DEBUG): |
| 37048 | 1228 self._log(DEBUG, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1229 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1230 def info(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1231 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1232 Log 'msg % args' with severity 'INFO'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1233 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1234 To pass exception information, use the keyword argument exc_info with |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1235 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1236 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1237 logger.info("Houston, we have a %s", "interesting problem", exc_info=1) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1238 """ |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
1239 if self.isEnabledFor(INFO): |
| 37048 | 1240 self._log(INFO, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1241 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1242 def warning(self, msg, *args, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1243 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1244 Log 'msg % args' with severity 'WARNING'. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1245 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1246 To pass exception information, use the keyword argument exc_info with |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1247 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1248 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1249 logger.warning("Houston, we have a %s", "bit of a problem", exc_info=1) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1250 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1251 if self.isEnabledFor(WARNING): |
| 37048 | 1252 self._log(WARNING, msg, args, **kwargs) |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1253 |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1254 warn = warning |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1255 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1256 def error(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1257 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1258 Log 'msg % args' with severity 'ERROR'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1259 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1260 To pass exception information, use the keyword argument exc_info with |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1261 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1262 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1263 logger.error("Houston, we have a %s", "major problem", exc_info=1) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1264 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1265 if self.isEnabledFor(ERROR): |
| 37048 | 1266 self._log(ERROR, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1267 |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1268 def exception(self, msg, *args, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1269 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1270 Convenience method for logging an ERROR with exception information. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1271 """ |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1272 kwargs['exc_info'] = True |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1273 self.error(msg, *args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1274 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1275 def critical(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1276 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1277 Log 'msg % args' with severity 'CRITICAL'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1278 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1279 To pass exception information, use the keyword argument exc_info with |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1280 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1281 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1282 logger.critical("Houston, we have a %s", "major disaster", exc_info=1) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1283 """ |
|
42775
d7517c306791
Merged revisions 57221-57391 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
42501
diff
changeset
|
1284 if self.isEnabledFor(CRITICAL): |
| 37048 | 1285 self._log(CRITICAL, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1286 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1287 fatal = critical |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1288 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1289 def log(self, level, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1290 """ |
|
32955
e2fea22e0c51
Updated Logger.log() docstring to clarify that lvl parameter should be an integer.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32856
diff
changeset
|
1291 Log 'msg % args' with the integer severity 'level'. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1292 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1293 To pass exception information, use the keyword argument exc_info with |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1294 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1295 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1296 logger.log(level, "We have a %s", "mysterious problem", exc_info=1) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1297 """ |
|
41986
6464cc638faa
Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41969
diff
changeset
|
1298 if not isinstance(level, int): |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1299 if raiseExceptions: |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
42775
diff
changeset
|
1300 raise TypeError("level must be an integer") |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1301 else: |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1302 return |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1303 if self.isEnabledFor(level): |
| 37048 | 1304 self._log(level, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1305 |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1306 def findCaller(self, stack_info=False): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1307 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1308 Find the stack frame of the caller so that we can note the source |
|
34612
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
1309 file name, line number and function name. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1310 """ |
|
56368
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
1311 f = currentframe() |
|
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
1312 #On some versions of IronPython, currentframe() returns None if |
|
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
1313 #IronPython isn't run with -X:Frames. |
|
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
1314 if f is not None: |
|
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
1315 f = f.f_back |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1316 rv = "(unknown file)", 0, "(unknown function)", None |
|
37875
a4c70f3968be
Merge part of the trunk changes into the p3yk branch. This merges from 43030
Thomas Wouters <thomas@python.org>
parents:
37052
diff
changeset
|
1317 while hasattr(f, "f_code"): |
|
27349
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1318 co = f.f_code |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1319 filename = os.path.normcase(co.co_filename) |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1320 if filename == _srcfile: |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1321 f = f.f_back |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1322 continue |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1323 sinfo = None |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1324 if stack_info: |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1325 sio = io.StringIO() |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1326 sio.write('Stack (most recent call last):\n') |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1327 traceback.print_stack(f, file=sio) |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1328 sinfo = sio.getvalue() |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1329 if sinfo[-1] == '\n': |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1330 sinfo = sinfo[:-1] |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1331 sio.close() |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1332 rv = (co.co_filename, f.f_lineno, co.co_name, sinfo) |
|
37875
a4c70f3968be
Merge part of the trunk changes into the p3yk branch. This merges from 43030
Thomas Wouters <thomas@python.org>
parents:
37052
diff
changeset
|
1333 break |
|
a4c70f3968be
Merge part of the trunk changes into the p3yk branch. This merges from 43030
Thomas Wouters <thomas@python.org>
parents:
37052
diff
changeset
|
1334 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1335 |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1336 def makeRecord(self, name, level, fn, lno, msg, args, exc_info, |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1337 func=None, extra=None, sinfo=None): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1338 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1339 A factory method which can be overridden in subclasses to create |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1340 specialized LogRecords. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1341 """ |
|
66638
81f4d1fdf573
logging: Added getLogRecordFactory/setLogRecordFactory with docs and tests.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66201
diff
changeset
|
1342 rv = _logRecordFactory(name, level, fn, lno, msg, args, exc_info, func, |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1343 sinfo) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1344 if extra is not None: |
|
36468
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1345 for key in extra: |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1346 if (key in ["message", "asctime"]) or (key in rv.__dict__): |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1347 raise KeyError("Attempt to overwrite %r in LogRecord" % key) |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1348 rv.__dict__[key] = extra[key] |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1349 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1350 |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1351 def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1352 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1353 Low-level logging routine which creates a LogRecord and then calls |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1354 all the handlers of this logger to handle the record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1355 """ |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1356 sinfo = None |
|
27349
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1357 if _srcfile: |
|
51740
833ddfec0bc4
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51579
diff
changeset
|
1358 #IronPython doesn't track Python frames, so findCaller throws an |
|
56368
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
1359 #exception on some versions of IronPython. We trap it here so that |
|
c9bd62efe6ce
Merged revisions 75231 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
54807
diff
changeset
|
1360 #IronPython can use logging. |
|
51740
833ddfec0bc4
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51579
diff
changeset
|
1361 try: |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1362 fn, lno, func, sinfo = self.findCaller(stack_info) |
|
51740
833ddfec0bc4
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51579
diff
changeset
|
1363 except ValueError: |
|
833ddfec0bc4
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51579
diff
changeset
|
1364 fn, lno, func = "(unknown file)", 0, "(unknown function)" |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1365 else: |
|
34612
07cf1a1640da
Improved frame handling for 1.5.2, and now return func from findCaller (not actually used yet)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33815
diff
changeset
|
1366 fn, lno, func = "(unknown file)", 0, "(unknown function)" |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1367 if exc_info: |
|
41986
6464cc638faa
Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41969
diff
changeset
|
1368 if not isinstance(exc_info, tuple): |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1369 exc_info = sys.exc_info() |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1370 record = self.makeRecord(self.name, level, fn, lno, msg, args, |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1371 exc_info, func, extra, sinfo) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1372 self.handle(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1373 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1374 def handle(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1375 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1376 Call the handlers for the specified record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1377 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1378 This method is used for unpickled records received from a socket, as |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1379 well as those created locally. Logger-level filtering is applied. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1380 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1381 if (not self.disabled) and self.filter(record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1382 self.callHandlers(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1383 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1384 def addHandler(self, hdlr): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1385 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1386 Add the specified handler to this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1387 """ |
|
64966
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1388 _acquireLock() |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1389 try: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1390 if not (hdlr in self.handlers): |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1391 self.handlers.append(hdlr) |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1392 finally: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1393 _releaseLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1394 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1395 def removeHandler(self, hdlr): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1396 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1397 Remove the specified handler from this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1398 """ |
|
64966
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1399 _acquireLock() |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1400 try: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1401 if hdlr in self.handlers: |
|
35582
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1402 self.handlers.remove(hdlr) |
|
64966
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1403 finally: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1404 _releaseLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1405 |
|
64847
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1406 def hasHandlers(self): |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1407 """ |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1408 See if this logger has any handlers configured. |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1409 |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1410 Loop through all handlers for this logger and its parents in the |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1411 logger hierarchy. Return True if a handler was found, else False. |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1412 Stop searching up the hierarchy whenever a logger with the "propagate" |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1413 attribute set to zero is found - that will be the last logger which |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1414 is checked for the existence of handlers. |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1415 """ |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1416 c = self |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1417 rv = False |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1418 while c: |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1419 if c.handlers: |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1420 rv = True |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1421 break |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1422 if not c.propagate: |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1423 break |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1424 else: |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1425 c = c.parent |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1426 return rv |
|
ec028067049d
logging: Add hasHandlers() method to Logger.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64720
diff
changeset
|
1427 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1428 def callHandlers(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1429 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1430 Pass a record to all relevant handlers. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1431 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1432 Loop through all handlers for this logger and its parents in the |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1433 logger hierarchy. If no handler was found, output a one-off error |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1434 message to sys.stderr. Stop searching up the hierarchy whenever a |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1435 logger with the "propagate" attribute set to zero is found - that |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1436 will be the last logger whose handlers are called. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1437 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1438 c = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1439 found = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1440 while c: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1441 for hdlr in c.handlers: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1442 found = found + 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1443 if record.levelno >= hdlr.level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1444 hdlr.handle(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1445 if not c.propagate: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1446 c = None #break out |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1447 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1448 c = c.parent |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1449 if (found == 0): |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1450 if lastResort: |
|
71500
d11a1a373f58
Fixes #12637: Last resort messages now correctly handled. Thanks to Xavier de Gaye for the patch."
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
68336
diff
changeset
|
1451 if record.levelno >= lastResort.level: |
|
d11a1a373f58
Fixes #12637: Last resort messages now correctly handled. Thanks to Xavier de Gaye for the patch."
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
68336
diff
changeset
|
1452 lastResort.handle(record) |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1453 elif raiseExceptions and not self.manager.emittedNoHandlerWarning: |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1454 sys.stderr.write("No handlers could be found for logger" |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1455 " \"%s\"\n" % self.name) |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1456 self.manager.emittedNoHandlerWarning = True |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1457 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1458 def getEffectiveLevel(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1459 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1460 Get the effective level for this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1461 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1462 Loop through this logger and its parents in the logger hierarchy, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1463 looking for a non-zero logging level. Return the first one found. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1464 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1465 logger = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1466 while logger: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1467 if logger.level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1468 return logger.level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1469 logger = logger.parent |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1470 return NOTSET |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1471 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1472 def isEnabledFor(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1473 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1474 Is this logger enabled for level 'level'? |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1475 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1476 if self.manager.disable >= level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1477 return 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1478 return level >= self.getEffectiveLevel() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1479 |
|
60506
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1480 def getChild(self, suffix): |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1481 """ |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1482 Get a logger which is a descendant to this one. |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1483 |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1484 This is a convenience method, such that |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1485 |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1486 logging.getLogger('abc').getChild('def.ghi') |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1487 |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1488 is the same as |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1489 |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1490 logging.getLogger('abc.def.ghi') |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1491 |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1492 It's useful, for example, when the parent logger is named using |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1493 __name__ rather than a literal string. |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1494 """ |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1495 if self.root is not self: |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1496 suffix = '.'.join((self.name, suffix)) |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1497 return self.manager.getLogger(suffix) |
|
66ad267a73bf
Merged revisions 79279,79284,79293,79373,79376,79379,79876,79888 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59876
diff
changeset
|
1498 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1499 class RootLogger(Logger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1500 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1501 A root logger is not that different to any other logger, except that |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1502 it must have a logging level and there is only one instance of it in |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1503 the hierarchy. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1504 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1505 def __init__(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1506 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1507 Initialize the logger with the name "root". |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1508 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1509 Logger.__init__(self, "root", level) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1510 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1511 _loggerClass = Logger |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1512 |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
1513 class LoggerAdapter(object): |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1514 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1515 An adapter for loggers which makes it easier to specify contextual |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1516 information in logging output. |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1517 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1518 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1519 def __init__(self, logger, extra): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1520 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1521 Initialize the adapter with a logger and a dict-like object which |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1522 provides contextual information. This constructor signature allows |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1523 easy stacking of LoggerAdapters, if so desired. |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1524 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1525 You can effectively pass keyword arguments as shown in the |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1526 following example: |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1527 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1528 adapter = LoggerAdapter(someLogger, dict(p1=v1, p2="v2")) |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1529 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1530 self.logger = logger |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1531 self.extra = extra |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1532 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1533 def process(self, msg, kwargs): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1534 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1535 Process the logging message and keyword arguments passed in to |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1536 a logging call to insert contextual information. You can either |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1537 manipulate the message itself, the keyword args or both. Return |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1538 the message and kwargs modified (or not) to suit your needs. |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1539 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1540 Normally, you'll only need to override this one method in a |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1541 LoggerAdapter subclass for your specific needs. |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1542 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1543 kwargs["extra"] = self.extra |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1544 return msg, kwargs |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1545 |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1546 # |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1547 # Boilerplate convenience methods |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1548 # |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1549 def debug(self, msg, *args, **kwargs): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1550 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1551 Delegate a debug call to the underlying logger. |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1552 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1553 self.log(DEBUG, msg, *args, **kwargs) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1554 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1555 def info(self, msg, *args, **kwargs): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1556 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1557 Delegate an info call to the underlying logger. |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1558 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1559 self.log(INFO, msg, *args, **kwargs) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1560 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1561 def warning(self, msg, *args, **kwargs): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1562 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1563 Delegate a warning call to the underlying logger. |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1564 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1565 self.log(WARNING, msg, *args, **kwargs) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1566 |
|
64866
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1567 warn = warning |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1568 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1569 def error(self, msg, *args, **kwargs): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1570 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1571 Delegate an error call to the underlying logger. |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1572 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1573 self.log(ERROR, msg, *args, **kwargs) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1574 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1575 def exception(self, msg, *args, **kwargs): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1576 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1577 Delegate an exception call to the underlying logger. |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1578 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1579 kwargs["exc_info"] = 1 |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1580 self.log(ERROR, msg, *args, **kwargs) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1581 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1582 def critical(self, msg, *args, **kwargs): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1583 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1584 Delegate a critical call to the underlying logger. |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1585 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1586 self.log(CRITICAL, msg, *args, **kwargs) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1587 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1588 def log(self, level, msg, *args, **kwargs): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1589 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1590 Delegate a log call to the underlying logger, after adding |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1591 contextual information from this adapter instance. |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1592 """ |
|
64867
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1593 if self.isEnabledFor(level): |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1594 msg, kwargs = self.process(msg, kwargs) |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1595 self.logger._log(level, msg, args, **kwargs) |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1596 |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1597 def isEnabledFor(self, level): |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1598 """ |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1599 Is this logger enabled for level 'level'? |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1600 """ |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1601 if self.logger.manager.disable >= level: |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1602 return False |
|
603679d85329
logging: Updated LoggerAdapter implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64866
diff
changeset
|
1603 return level >= self.getEffectiveLevel() |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1604 |
|
64866
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1605 def setLevel(self, level): |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1606 """ |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1607 Set the specified level on the underlying logger. |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1608 """ |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1609 self.logger.setLevel(level) |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1610 |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1611 def getEffectiveLevel(self): |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1612 """ |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1613 Get the effective level for the underlying logger. |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1614 """ |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1615 return self.logger.getEffectiveLevel() |
|
e90427984442
Added some methods to LoggerAdapter, and updated documentation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64849
diff
changeset
|
1616 |
|
64849
cf88171499b5
logging: added hasHandlers() to LoggerAdapter.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64847
diff
changeset
|
1617 def hasHandlers(self): |
|
cf88171499b5
logging: added hasHandlers() to LoggerAdapter.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64847
diff
changeset
|
1618 """ |
|
cf88171499b5
logging: added hasHandlers() to LoggerAdapter.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64847
diff
changeset
|
1619 See if the underlying logger has any handlers. |
|
cf88171499b5
logging: added hasHandlers() to LoggerAdapter.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64847
diff
changeset
|
1620 """ |
|
cf88171499b5
logging: added hasHandlers() to LoggerAdapter.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
64847
diff
changeset
|
1621 return self.logger.hasHandlers() |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44498
diff
changeset
|
1622 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1623 root = RootLogger(WARNING) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1624 Logger.root = root |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1625 Logger.manager = Manager(Logger.root) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1626 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1627 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1628 # Configuration classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1629 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1630 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1631 BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1632 |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1633 def basicConfig(**kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1634 """ |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1635 Do basic configuration for the logging system. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1636 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1637 This function does nothing if the root logger already has handlers |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1638 configured. It is a convenience method intended for use by simple scripts |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1639 to do one-shot configuration of the logging package. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1640 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1641 The default behaviour is to create a StreamHandler which writes to |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1642 sys.stderr, set a formatter using the BASIC_FORMAT format string, and |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1643 add the handler to the root logger. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1644 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1645 A number of optional keyword arguments may be specified, which can alter |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1646 the default behaviour. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1647 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1648 filename Specifies that a FileHandler be created, using the specified |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1649 filename, rather than a StreamHandler. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1650 filemode Specifies the mode to open the file, if filename is specified |
|
34744
3d97eb3b7cec
Added optional encoding argument to file handlers. Made traceback import unconditional, to avoid lock contention problems which occur when logging from custom importers (SF patch #1158052)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34612
diff
changeset
|
1651 (if filemode is unspecified, it defaults to 'a'). |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1652 format Use the specified format string for the handler. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1653 datefmt Use the specified date/time format. |
|
65816
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1654 style If a format string is specified, use this to specify the |
|
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1655 type of format string (possible values '%', '{', '$', for |
|
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1656 %-formatting, :meth:`str.format` and :class:`string.Template` |
|
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1657 - defaults to '%'). |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1658 level Set the root logger level to the specified level. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1659 stream Use the specified stream to initialize the StreamHandler. Note |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1660 that this argument is incompatible with 'filename' - if both |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1661 are present, 'stream' is ignored. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1662 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1663 Note that you could specify a stream created using open(filename, mode) |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1664 rather than passing the filename and mode in. However, it should be |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1665 remembered that StreamHandler does not close its stream (since it may be |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1666 using sys.stdout or sys.stderr), whereas FileHandler closes its stream |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1667 when the handler is closed. |
|
65816
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1668 |
|
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1669 .. versionchanged: 3.2 |
|
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1670 Added the ``style`` parameter. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1671 """ |
|
64966
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1672 # Add thread safety in case someone mistakenly calls |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1673 # basicConfig() from multiple threads |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1674 _acquireLock() |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1675 try: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1676 if len(root.handlers) == 0: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1677 filename = kwargs.get("filename") |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1678 if filename: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1679 mode = kwargs.get("filemode", 'a') |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1680 hdlr = FileHandler(filename, mode) |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1681 else: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1682 stream = kwargs.get("stream") |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1683 hdlr = StreamHandler(stream) |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1684 fs = kwargs.get("format", BASIC_FORMAT) |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1685 dfs = kwargs.get("datefmt", None) |
|
65816
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1686 style = kwargs.get("style", '%') |
|
3217b10f8413
Added style argument to logging.basicConfig() and documented this change.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65647
diff
changeset
|
1687 fmt = Formatter(fs, dfs, style) |
|
64966
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1688 hdlr.setFormatter(fmt) |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1689 root.addHandler(hdlr) |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1690 level = kwargs.get("level") |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1691 if level is not None: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1692 root.setLevel(level) |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1693 finally: |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1694 _releaseLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1695 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1696 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1697 # Utility functions at module level. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1698 # Basically delegate everything to the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1699 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1700 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1701 def getLogger(name=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1702 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1703 Return a logger with the specified name, creating it if necessary. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1704 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1705 If no name is specified, return the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1706 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1707 if name: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1708 return Logger.manager.getLogger(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1709 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1710 return root |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1711 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1712 def critical(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1713 """ |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1714 Log a message with severity 'CRITICAL' on the root logger. If the logger |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1715 has no handlers, call basicConfig() to add a console handler with a |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1716 pre-defined format. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1717 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1718 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1719 basicConfig() |
| 37048 | 1720 root.critical(msg, *args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1721 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1722 fatal = critical |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1723 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1724 def error(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1725 """ |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1726 Log a message with severity 'ERROR' on the root logger. If the logger has |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1727 no handlers, call basicConfig() to add a console handler with a pre-defined |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1728 format. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1729 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1730 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1731 basicConfig() |
| 37048 | 1732 root.error(msg, *args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1733 |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1734 def exception(msg, *args, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1735 """ |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1736 Log a message with severity 'ERROR' on the root logger, with exception |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1737 information. If the logger has no handlers, basicConfig() is called to add |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1738 a console handler with a pre-defined format. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1739 """ |
|
66201
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1740 kwargs['exc_info'] = True |
|
ba014543ed2c
Logging: added stack_info argument.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
65816
diff
changeset
|
1741 error(msg, *args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1742 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1743 def warning(msg, *args, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1744 """ |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1745 Log a message with severity 'WARNING' on the root logger. If the logger has |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1746 no handlers, call basicConfig() to add a console handler with a pre-defined |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1747 format. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1748 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1749 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1750 basicConfig() |
| 37048 | 1751 root.warning(msg, *args, **kwargs) |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1752 |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1753 warn = warning |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1754 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1755 def info(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1756 """ |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1757 Log a message with severity 'INFO' on the root logger. If the logger has |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1758 no handlers, call basicConfig() to add a console handler with a pre-defined |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1759 format. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1760 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1761 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1762 basicConfig() |
| 37048 | 1763 root.info(msg, *args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1764 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1765 def debug(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1766 """ |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1767 Log a message with severity 'DEBUG' on the root logger. If the logger has |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1768 no handlers, call basicConfig() to add a console handler with a pre-defined |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1769 format. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1770 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1771 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1772 basicConfig() |
| 37048 | 1773 root.debug(msg, *args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1774 |
|
33556
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1775 def log(level, msg, *args, **kwargs): |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1776 """ |
|
66819
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1777 Log 'msg % args' with the integer severity 'level' on the root logger. If |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1778 the logger has no handlers, call basicConfig() to add a console handler |
|
c86dc2bd3ae8
logging: added handler of last resort.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
66640
diff
changeset
|
1779 with a pre-defined format. |
|
33556
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1780 """ |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1781 if len(root.handlers) == 0: |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1782 basicConfig() |
| 37048 | 1783 root.log(level, msg, *args, **kwargs) |
|
33556
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1784 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1785 def disable(level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1786 """ |
|
59876
90217a86642d
Merged revisions 78966,78970,79018,79026-79027,79055,79156,79159,79163-79164,79173,79176,79194,79208,79212 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
59600
diff
changeset
|
1787 Disable all logging calls of severity 'level' and below. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1788 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1789 root.manager.disable = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1790 |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39589
diff
changeset
|
1791 def shutdown(handlerList=_handlerList): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1792 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1793 Perform any cleanup actions in the logging system (e.g. flushing |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1794 buffers). |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1795 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1796 Should be called at application exit. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1797 """ |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
1798 for wr in reversed(handlerList[:]): |
|
32856
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1799 #errors might occur, for example, if files are locked |
|
36468
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1800 #we just ignore them if raiseExceptions is not set |
|
32856
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1801 try: |
|
57449
022cd0f3c558
Merged revisions 76498,76507-76509 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
56548
diff
changeset
|
1802 h = wr() |
|
64247
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1803 if h: |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1804 try: |
| 68336 | 1805 h.acquire() |
|
64247
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1806 h.flush() |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1807 h.close() |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1808 except (IOError, ValueError): |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1809 # Ignore errors which might be caused |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1810 # because handlers have been closed but |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1811 # references to them are still around at |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1812 # application exit. |
|
9d4dc5855c51
Issue #9501: Fixed logging regressions in cleanup code.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
60506
diff
changeset
|
1813 pass |
| 68336 | 1814 finally: |
| 1815 h.release() | |
|
32856
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1816 except: |
|
36468
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1817 if raiseExceptions: |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1818 raise |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1819 #else, swallow |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1820 |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1821 #Let's try and shutdown automatically on application exit... |
|
58758
81b2306e6bf3
Remove Python 1.x or 2.x compatibility code.
Georg Brandl <georg@python.org>
parents:
58218
diff
changeset
|
1822 import atexit |
|
81b2306e6bf3
Remove Python 1.x or 2.x compatibility code.
Georg Brandl <georg@python.org>
parents:
58218
diff
changeset
|
1823 atexit.register(shutdown) |
|
50074
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1824 |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1825 # Null handler |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1826 |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1827 class NullHandler(Handler): |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1828 """ |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1829 This handler does nothing. It's intended to be used to avoid the |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1830 "No handlers could be found for logger XXX" one-off warning. This is |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1831 important for library code, which may contain code to log events. If a user |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1832 of the library does not configure logging, the one-off warning might be |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1833 produced; to avoid this, the library developer simply needs to instantiate |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1834 a NullHandler and add it to the top-level logger of the library module or |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1835 package. |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1836 """ |
|
64966
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1837 def handle(self, record): |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1838 pass |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1839 |
|
50074
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1840 def emit(self, record): |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1841 pass |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1842 |
|
64966
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1843 def createLock(self): |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1844 self.lock = None |
|
7dfa9900f8c7
Issue #9945: logging: backported locking fixes from py3k.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
58219
diff
changeset
|
1845 |
|
50074
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1846 # Warnings integration |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1847 |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1848 _warnings_showwarning = None |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1849 |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1850 def _showwarning(message, category, filename, lineno, file=None, line=None): |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1851 """ |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1852 Implementation of showwarnings which redirects to logging, which will first |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1853 check to see if the file parameter is None. If a file is specified, it will |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1854 delegate to the original warnings implementation of showwarning. Otherwise, |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1855 it will call warnings.formatwarning and will log the resulting string to a |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1856 warnings logger named "py.warnings" with level logging.WARNING. |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1857 """ |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1858 if file is not None: |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1859 if _warnings_showwarning is not None: |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1860 _warnings_showwarning(message, category, filename, lineno, file, line) |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1861 else: |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1862 s = warnings.formatwarning(message, category, filename, lineno, line) |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1863 logger = getLogger("py.warnings") |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1864 if not logger.handlers: |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1865 logger.addHandler(NullHandler()) |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1866 logger.warning("%s", s) |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1867 |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1868 def captureWarnings(capture): |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1869 """ |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1870 If capture is true, redirect all warnings to the logging package. |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1871 If capture is False, ensure that warnings are not redirected to logging |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1872 but to their original destinations. |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1873 """ |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1874 global _warnings_showwarning |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1875 if capture: |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1876 if _warnings_showwarning is None: |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1877 _warnings_showwarning = warnings.showwarning |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1878 warnings.showwarning = _showwarning |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1879 else: |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1880 if _warnings_showwarning is not None: |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1881 warnings.showwarning = _warnings_showwarning |
|
024a9897c651
Merged revisions 67511,67536-67537,67543 via svnmerge from
Georg Brandl <georg@python.org>
parents:
49095
diff
changeset
|
1882 _warnings_showwarning = None |
