Mercurial > cpython-lru_cache-weakref
annotate Lib/logging/__init__.py @ 58925:eecf1bef052d 2.6
Merged revisions 78207 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78207 | ezio.melotti | 2010-02-17 01:26:09 +0200 (Wed, 17 Feb 2010) | 1 line
#7930: fix stripid
........
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Tue, 16 Feb 2010 23:29:44 +0000 |
| parents | 53669cbf0ed2 |
| children | 9eabba6ded09 |
| rev | line source |
|---|---|
|
51693
85407d047782
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51475
diff
changeset
|
1 # Copyright 2001-2009 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 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 comp.lang.python, and influenced by Apache's log4j system. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 |
|
50949
7c30ab0134a1
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50257
diff
changeset
|
21 Copyright (C) 2001-2009 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 |
|
45370
71139b692439
Add __all__ to logging module.
Raymond Hettinger <python@rcn.com>
parents:
44907
diff
changeset
|
26 __all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR', |
|
53504
293ada1dbfda
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:
53311
diff
changeset
|
27 'FATAL', 'FileHandler', 'Filter', 'Formatter', 'Handler', 'INFO', |
|
56364
218cdd6c6842
#7052: remove nonexisting NullHandler from logging.__all__.
Georg Brandl <georg@python.org>
parents:
56281
diff
changeset
|
28 'LogRecord', 'Logger', 'LoggerAdapter', 'NOTSET', |
|
53504
293ada1dbfda
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:
53311
diff
changeset
|
29 'StreamHandler', 'WARN', 'WARNING', 'addLevelName', 'basicConfig', |
|
56365
d5d8cb98eb2a
Issue #7052: Removed captureWarnings from __all__
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56364
diff
changeset
|
30 'critical', 'debug', 'disable', 'error', |
|
53504
293ada1dbfda
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:
53311
diff
changeset
|
31 'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass', |
|
293ada1dbfda
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:
53311
diff
changeset
|
32 'info', 'log', 'makeLogRecord', 'setLoggerClass', 'warn', 'warning'] |
|
45370
71139b692439
Add __all__ to logging module.
Raymond Hettinger <python@rcn.com>
parents:
44907
diff
changeset
|
33 |
|
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
|
34 import sys, os, types, time, string, cStringIO, traceback |
|
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
|
35 |
|
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
|
36 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
|
37 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
|
38 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
|
39 codecs = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 import thread |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 import threading |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 except ImportError: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 thread = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 __author__ = "Vinay Sajip <vinay_sajip@red-dove.com>" |
|
38214
4cb9dc0dc3f9
Changed status from "beta" to "production"; since logging has been part of the stdlib since 2.3, it should be safe to make this assertion ;-)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
37610
diff
changeset
|
48 __status__ = "production" |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
49 __version__ = "0.5.0.5" |
|
51693
85407d047782
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51475
diff
changeset
|
50 __date__ = "17 February 2009" |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 # Miscellaneous module data |
|
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 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 # |
|
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
|
57 # _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
|
58 # caller stack frame. |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
59 # |
|
35512
9516ba54b9df
Changed _srcfile determination to support py2exe.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34858
diff
changeset
|
60 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
|
61 _srcfile = "logging%s__init__%s" % (os.sep, __file__[-4:]) |
|
9516ba54b9df
Changed _srcfile determination to support py2exe.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34858
diff
changeset
|
62 elif string.lower(__file__[-4:]) in ['.pyc', '.pyo']: |
|
26184
3e59d674b8c3
Get rid of #! lines, references to usage as __main__, README.txt, and
Guido van Rossum <guido@python.org>
parents:
26183
diff
changeset
|
63 _srcfile = __file__[:-4] + '.py' |
|
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: |
|
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
|
74 return sys.exc_traceback.tb_frame.f_back |
|
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 |
|
40859
f4f695a75664
Minor fix for currentframe (SF #1652788).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40579
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 # |
|
52148
632aa568474c
Merged revisions 68737 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51693
diff
changeset
|
103 # If you don't want multiprocessing information in the log, set this to zero |
|
632aa568474c
Merged revisions 68737 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51693
diff
changeset
|
104 # |
|
632aa568474c
Merged revisions 68737 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51693
diff
changeset
|
105 logMultiprocessing = 1 |
|
632aa568474c
Merged revisions 68737 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51693
diff
changeset
|
106 |
|
632aa568474c
Merged revisions 68737 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51693
diff
changeset
|
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 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
177 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
178 # Thread-related stuff |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
179 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
180 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
181 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
182 #_lock is used to serialize access to shared data structures in this module. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
183 #This needs to be an RLock because fileConfig() creates Handlers and so |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
184 #might arbitrary user threads. Since Handler.__init__() updates the shared |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
185 #dictionary _handlers, it needs to acquire the lock. But if configuring, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
186 #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
|
187 #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
|
188 # |
|
57475
53669cbf0ed2
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56533
diff
changeset
|
189 if thread: |
|
53669cbf0ed2
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56533
diff
changeset
|
190 _lock = threading.RLock() |
|
53669cbf0ed2
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56533
diff
changeset
|
191 else: |
|
53669cbf0ed2
Issue #7403: Fixed possible race condition in lock creation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56533
diff
changeset
|
192 _lock = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
193 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
194 def _acquireLock(): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
195 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
196 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
|
197 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
198 This should be released with _releaseLock(). |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
199 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
200 if _lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
201 _lock.acquire() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
202 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
203 def _releaseLock(): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
204 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
205 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
|
206 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
207 if _lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
208 _lock.release() |
|
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 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
211 # The logging record |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
212 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
213 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
214 class LogRecord: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
215 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
216 A LogRecord instance represents an event being logged. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
217 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
218 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
|
219 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
|
220 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
|
221 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
|
222 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
|
223 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
|
224 information to be logged. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
225 """ |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
226 def __init__(self, name, level, pathname, lineno, |
|
39959
4da4de954012
Modified LogRecord.__init__ to make the func parameter optional. (See SF #1569622).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
39439
diff
changeset
|
227 msg, args, exc_info, func=None): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
228 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
229 Initialize a logging record with interesting information. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
230 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
231 ct = time.time() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
232 self.name = name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
233 self.msg = msg |
|
33807
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
234 # |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
235 # 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
|
236 # 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
|
237 # 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
|
238 # Suggested by Stefan Behnel. |
|
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
239 # 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
|
240 # 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
|
241 # '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
|
242 # 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
|
243 # 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
|
244 # '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
|
245 # 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
|
246 # problem. |
|
43445
13baada2a601
Change to LogRecord.__init__() to fix #1206. Note that archaic use of type(x) == types.DictType is because of keeping 1.5.2 compatibility. While this is much less relevant these days, there probably needs to be a separate commit for removing all archaic constructs at the same time.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43444
diff
changeset
|
247 if args and len(args) == 1 and ( |
|
13baada2a601
Change to LogRecord.__init__() to fix #1206. Note that archaic use of type(x) == types.DictType is because of keeping 1.5.2 compatibility. While this is much less relevant these days, there probably needs to be a separate commit for removing all archaic constructs at the same time.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43444
diff
changeset
|
248 type(args[0]) == types.DictType |
|
13baada2a601
Change to LogRecord.__init__() to fix #1206. Note that archaic use of type(x) == types.DictType is because of keeping 1.5.2 compatibility. While this is much less relevant these days, there probably needs to be a separate commit for removing all archaic constructs at the same time.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43444
diff
changeset
|
249 ) and args[0]: |
|
33807
47b384519775
Changed handling of args in LogRecord.__init__.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33668
diff
changeset
|
250 args = args[0] |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
251 self.args = args |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
252 self.levelname = getLevelName(level) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
253 self.levelno = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
254 self.pathname = pathname |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
255 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
256 self.filename = os.path.basename(pathname) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
257 self.module = os.path.splitext(self.filename)[0] |
|
40575
1ed3ed9af348
Bare except clause removed from LogRecord.__init__. Now, only ValueError, TypeError and AttributeError are trapped.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40275
diff
changeset
|
258 except (TypeError, ValueError, AttributeError): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
259 self.filename = pathname |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
260 self.module = "Unknown module" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
261 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
|
262 self.exc_text = None # used to cache the traceback text |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
263 self.lineno = lineno |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
264 self.funcName = func |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
265 self.created = ct |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
266 self.msecs = (ct - long(ct)) * 1000 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
267 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
|
268 if logThreads and thread: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
269 self.thread = thread.get_ident() |
|
48289
024b2b984866
change a few uses of the threading APIs
Benjamin Peterson <benjamin@python.org>
parents:
48153
diff
changeset
|
270 self.threadName = threading.current_thread().name |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
271 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
272 self.thread = None |
|
34858
2ea3d6915204
Added threadName and now using re-entrant lock
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34744
diff
changeset
|
273 self.threadName = None |
|
56281
a8d0e764e34b
Issue #7014: logging: Improved IronPython 2.6 compatibility.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53946
diff
changeset
|
274 if not logMultiprocessing: |
|
a8d0e764e34b
Issue #7014: logging: Improved IronPython 2.6 compatibility.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53946
diff
changeset
|
275 self.processName = None |
|
56533
9044f64b10ae
Issue #7120: logging: Removed import of multiprocessing which is causing crash in GAE.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56365
diff
changeset
|
276 elif 'multiprocessing' not in sys.modules: |
|
9044f64b10ae
Issue #7120: logging: Removed import of multiprocessing which is causing crash in GAE.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56365
diff
changeset
|
277 self.processName = 'MainProcess' |
|
52148
632aa568474c
Merged revisions 68737 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51693
diff
changeset
|
278 else: |
|
56533
9044f64b10ae
Issue #7120: logging: Removed import of multiprocessing which is causing crash in GAE.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
56365
diff
changeset
|
279 self.processName = sys.modules['multiprocessing'].current_process().name |
|
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
|
280 if logProcesses and hasattr(os, 'getpid'): |
|
28019
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
281 self.process = os.getpid() |
|
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
282 else: |
|
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
283 self.process = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
284 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
285 def __str__(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
286 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
|
287 self.pathname, self.lineno, self.msg) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
288 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
289 def getMessage(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
290 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
291 Return the message for this LogRecord. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
292 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
293 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
|
294 arguments with the message. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
295 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
296 if not hasattr(types, "UnicodeType"): #if no unicode support... |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
297 msg = str(self.msg) |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
298 else: |
|
35703
76635ab7b707
Fixed bug where the logging message was wrongly being demoted from Unicode to string (SF #1314107)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35582
diff
changeset
|
299 msg = self.msg |
|
76635ab7b707
Fixed bug where the logging message was wrongly being demoted from Unicode to string (SF #1314107)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35582
diff
changeset
|
300 if type(msg) not in (types.UnicodeType, types.StringType): |
|
76635ab7b707
Fixed bug where the logging message was wrongly being demoted from Unicode to string (SF #1314107)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35582
diff
changeset
|
301 try: |
|
76635ab7b707
Fixed bug where the logging message was wrongly being demoted from Unicode to string (SF #1314107)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35582
diff
changeset
|
302 msg = str(self.msg) |
|
76635ab7b707
Fixed bug where the logging message was wrongly being demoted from Unicode to string (SF #1314107)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35582
diff
changeset
|
303 except UnicodeError: |
|
76635ab7b707
Fixed bug where the logging message was wrongly being demoted from Unicode to string (SF #1314107)
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35582
diff
changeset
|
304 msg = self.msg #Defer encoding till later |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
305 if self.args: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
306 msg = msg % self.args |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
307 return msg |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
308 |
|
29624
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
309 def makeLogRecord(dict): |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
310 """ |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
311 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
|
312 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
|
313 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
|
314 instance. |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
315 """ |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
316 rv = LogRecord(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
|
317 rv.__dict__.update(dict) |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
318 return rv |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
319 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
320 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
321 # Formatter classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
322 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
323 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
324 class Formatter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
325 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
326 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
|
327 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
328 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
|
329 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
|
330 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
|
331 allows a formatting string to be specified. If none is supplied, the |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
332 default value of "%s(message)\\n" is used. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
333 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
334 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
|
335 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
|
336 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
|
337 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
|
338 attributes in a LogRecord are described by: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
339 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
340 %(name)s Name of the logger (logging channel) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
341 %(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
|
342 WARNING, ERROR, CRITICAL) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
343 %(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
|
344 "WARNING", "ERROR", "CRITICAL") |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
345 %(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
|
346 call was issued (if available) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
347 %(filename)s Filename portion of pathname |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
348 %(module)s Module (name portion of filename) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
349 %(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
|
350 (if available) |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
351 %(funcName)s Function name |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
352 %(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
|
353 return value) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
354 %(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
|
355 %(msecs)d Millisecond portion of the creation time |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
356 %(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
|
357 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
|
358 (typically at application startup time) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
359 %(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
|
360 %(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
|
361 %(process)d Process ID (if available) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
362 %(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
|
363 the record is emitted |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
364 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
365 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
366 converter = time.localtime |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
367 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
368 def __init__(self, fmt=None, datefmt=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
369 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
370 Initialize the formatter with specified format strings. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
371 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
372 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
|
373 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
|
374 the optional datefmt argument (if omitted, you get the ISO8601 format). |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
375 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
376 if fmt: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
377 self._fmt = fmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
378 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
379 self._fmt = "%(message)s" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
380 self.datefmt = datefmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
381 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
382 def formatTime(self, record, datefmt=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
383 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
384 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
|
385 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
386 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
|
387 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
|
388 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
|
389 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
|
390 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
|
391 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
|
392 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
|
393 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
|
394 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
|
395 '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
|
396 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
|
397 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
|
398 set the 'converter' attribute in the Formatter class. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
399 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
400 ct = self.converter(record.created) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
401 if datefmt: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
402 s = time.strftime(datefmt, ct) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
403 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
404 t = time.strftime("%Y-%m-%d %H:%M:%S", ct) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
405 s = "%s,%03d" % (t, record.msecs) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
406 return s |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
407 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
408 def formatException(self, ei): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
409 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
410 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
|
411 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
412 This default implementation just uses |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
413 traceback.print_exception() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
414 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
415 sio = cStringIO.StringIO() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
416 traceback.print_exception(ei[0], ei[1], ei[2], None, sio) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
417 s = sio.getvalue() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
418 sio.close() |
|
42114
aab9080ac4c7
Bug #1737864: allow empty message in logging format routines.
Georg Brandl <georg@python.org>
parents:
40859
diff
changeset
|
419 if s[-1:] == "\n": |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
420 s = s[:-1] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
421 return s |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
422 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
423 def format(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
424 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
425 Format the specified record as text. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
426 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
427 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
|
428 string formatting operation which yields the returned string. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
429 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
|
430 are carried out. The message attribute of the record is computed |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
431 using LogRecord.getMessage(). If the formatting string contains |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
432 "%(asctime)", formatTime() is called to format the event time. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
433 If there is exception information, it is formatted using |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
434 formatException() and appended to the message. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
435 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
436 record.message = record.getMessage() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
437 if string.find(self._fmt,"%(asctime)") >= 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
438 record.asctime = self.formatTime(record, self.datefmt) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
439 s = self._fmt % record.__dict__ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
440 if record.exc_info: |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
441 # 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
|
442 # (it's constant anyway) |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
443 if not record.exc_text: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
444 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
|
445 if record.exc_text: |
|
42114
aab9080ac4c7
Bug #1737864: allow empty message in logging format routines.
Georg Brandl <georg@python.org>
parents:
40859
diff
changeset
|
446 if s[-1:] != "\n": |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
447 s = s + "\n" |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
448 s = s + record.exc_text |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
449 return s |
|
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 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
452 # 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
|
453 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
454 _defaultFormatter = Formatter() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
455 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
456 class BufferingFormatter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
457 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
458 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
|
459 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
460 def __init__(self, linefmt=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
461 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
462 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
|
463 individual record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
464 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
465 if linefmt: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
466 self.linefmt = linefmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
467 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
468 self.linefmt = _defaultFormatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
469 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
470 def formatHeader(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
471 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
472 Return the header string for the specified records. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
473 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
474 return "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
475 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
476 def formatFooter(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
477 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
478 Return the footer string for the specified records. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
479 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
480 return "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
481 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
482 def format(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
483 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
484 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
|
485 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
486 rv = "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
487 if len(records) > 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
488 rv = rv + self.formatHeader(records) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
489 for record in records: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
490 rv = rv + self.linefmt.format(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
491 rv = rv + self.formatFooter(records) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
492 return rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
493 |
|
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 # Filter classes and functions |
|
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 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
498 class Filter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
499 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
500 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
|
501 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
502 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
|
503 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
|
504 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
|
505 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
|
506 "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
|
507 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
|
508 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
509 def __init__(self, name=''): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
510 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
511 Initialize a filter. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
512 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
513 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
|
514 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
|
515 name is specified, allow every event. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
516 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
517 self.name = name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
518 self.nlen = len(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
519 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
520 def filter(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
521 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
522 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
|
523 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
524 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
|
525 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
|
526 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
527 if self.nlen == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
528 return 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
529 elif self.name == record.name: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
530 return 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
531 elif string.find(record.name, self.name, 0, self.nlen) != 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
532 return 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
533 return (record.name[self.nlen] == ".") |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
534 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
535 class Filterer: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
536 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
537 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
|
538 common code. |
|
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 def __init__(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
541 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
542 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
|
543 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
544 self.filters = [] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
545 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
546 def addFilter(self, filter): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
547 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
548 Add the specified filter to this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
549 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
550 if not (filter in self.filters): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
551 self.filters.append(filter) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
552 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
553 def removeFilter(self, filter): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
554 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
555 Remove the specified filter from this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
556 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
557 if filter in self.filters: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
558 self.filters.remove(filter) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
559 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
560 def filter(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
561 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
562 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
|
563 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
564 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
|
565 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
|
566 is to be dropped, else non-zero. |
|
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 rv = 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
569 for f in self.filters: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
570 if not f.filter(record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
571 rv = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
572 break |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
573 return rv |
|
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 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
576 # Handler classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
577 #--------------------------------------------------------------------------- |
|
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 _handlers = {} #repository of handlers (for flushing when shutdown called) |
|
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
|
580 _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
|
581 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
582 class Handler(Filterer): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
583 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
584 Handler instances dispatch logging events to specific destinations. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
585 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
586 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
|
587 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
|
588 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
|
589 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
|
590 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
591 def __init__(self, level=NOTSET): |
|
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 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
|
594 and the filter list to empty. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
595 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
596 Filterer.__init__(self) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
597 self.level = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
598 self.formatter = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
599 #get the module data lock, as we're updating a shared structure. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
600 _acquireLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
601 try: #unlikely to raise an exception, but you never know... |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
602 _handlers[self] = 1 |
|
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
|
603 _handlerList.insert(0, self) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
604 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
605 _releaseLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
606 self.createLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
607 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
608 def createLock(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
609 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
610 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
|
611 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
612 if thread: |
|
34858
2ea3d6915204
Added threadName and now using re-entrant lock
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34744
diff
changeset
|
613 self.lock = threading.RLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
614 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
615 self.lock = None |
|
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 def acquire(self): |
|
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 Acquire the I/O thread lock. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
620 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
621 if self.lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
622 self.lock.acquire() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
623 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
624 def release(self): |
|
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 Release the I/O thread lock. |
|
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 if self.lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
629 self.lock.release() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
630 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
631 def setLevel(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
632 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
633 Set the logging level of this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
634 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
635 self.level = level |
|
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 format(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 Format the specified record. |
|
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 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
|
642 for the module. |
|
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.formatter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
645 fmt = self.formatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
646 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
647 fmt = _defaultFormatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
648 return fmt.format(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
649 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
650 def emit(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
651 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
652 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
|
653 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
654 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
|
655 raises a NotImplementedError. |
|
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 raise NotImplementedError, 'emit must be implemented '\ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
658 'by Handler subclasses' |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
659 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
660 def handle(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
661 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
662 Conditionally emit the specified logging record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
663 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
664 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
|
665 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
|
666 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
|
667 emission. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
668 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
669 rv = self.filter(record) |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
670 if rv: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
671 self.acquire() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
672 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
673 self.emit(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
674 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
675 self.release() |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
676 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
677 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
678 def setFormatter(self, fmt): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
679 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
680 Set the formatter for this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
681 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
682 self.formatter = fmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
683 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
684 def flush(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
685 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
686 Ensure all logging output has been flushed. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
687 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
688 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
|
689 subclasses. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
690 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
691 pass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
692 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
693 def close(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
694 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
695 Tidy up any resources used by the handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
696 |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
697 This version does removes the handler from an internal list |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
698 of handlers which is closed when shutdown() is called. Subclasses |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
699 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
|
700 methods. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
701 """ |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
702 #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
|
703 _acquireLock() |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
704 try: #unlikely to raise an exception, but you never know... |
|
36456
51f760288104
Removed defensive test in Handler.close
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36448
diff
changeset
|
705 del _handlers[self] |
|
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
|
706 _handlerList.remove(self) |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
707 finally: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
708 _releaseLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
709 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
710 def handleError(self, record): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
711 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
712 Handle errors which occur during an emit() call. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
713 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
714 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
|
715 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
|
716 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
|
717 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
|
718 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
|
719 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
|
720 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
|
721 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
722 if raiseExceptions: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
723 ei = sys.exc_info() |
|
53946
eb6eb49dbae9
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53504
diff
changeset
|
724 try: |
|
eb6eb49dbae9
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53504
diff
changeset
|
725 traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr) |
|
eb6eb49dbae9
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53504
diff
changeset
|
726 except IOError: |
|
eb6eb49dbae9
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53504
diff
changeset
|
727 pass # see issue 5971 |
|
eb6eb49dbae9
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53504
diff
changeset
|
728 finally: |
|
eb6eb49dbae9
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53504
diff
changeset
|
729 del ei |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
730 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
731 class StreamHandler(Handler): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
732 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
733 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
|
734 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
|
735 sys.stdout or sys.stderr may be used. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
736 """ |
|
48923
576441527d4f
logging: fixed lack of use of encoding attribute specified on a stream.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48289
diff
changeset
|
737 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
738 def __init__(self, strm=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
739 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
740 Initialize the handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
741 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
742 If strm is not specified, sys.stderr is used. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
743 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
744 Handler.__init__(self) |
|
37610
7ed0f003ba63
StreamHandler now checks explicitly for None before using sys.stderr as the stream (see SF bug #1463840).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36999
diff
changeset
|
745 if strm is None: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
746 strm = sys.stderr |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
747 self.stream = strm |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
748 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
749 def flush(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
750 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
751 Flushes the stream. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
752 """ |
|
47745
8e85c46cf673
Bug #3126: StreamHandler and FileHandler check before calling "flush" and "close" that the stream object has these, using hasattr (thanks to bobf for the patch).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
47598
diff
changeset
|
753 if self.stream and hasattr(self.stream, "flush"): |
|
43441
b90286ab8629
Change to flush and close logic to fix #1760556.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
42751
diff
changeset
|
754 self.stream.flush() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
755 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
756 def emit(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
757 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
758 Emit a record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
759 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
760 If a formatter is specified, it is used to format the record. |
|
48923
576441527d4f
logging: fixed lack of use of encoding attribute specified on a stream.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48289
diff
changeset
|
761 The record is then written to the stream with a trailing newline. If |
|
576441527d4f
logging: fixed lack of use of encoding attribute specified on a stream.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48289
diff
changeset
|
762 exception information is present, it is formatted using |
|
576441527d4f
logging: fixed lack of use of encoding attribute specified on a stream.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48289
diff
changeset
|
763 traceback.print_exception and appended to the stream. If the stream |
|
576441527d4f
logging: fixed lack of use of encoding attribute specified on a stream.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48289
diff
changeset
|
764 has an 'encoding' attribute, it is used to encode the message before |
|
576441527d4f
logging: fixed lack of use of encoding attribute specified on a stream.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
48289
diff
changeset
|
765 output to the stream. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
766 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
767 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
768 msg = self.format(record) |
|
51475
c17f9281a856
Issue #5170: Fixed Unicode output bug in logging and added test case. This is a regression which did not occur in 2.5.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50951
diff
changeset
|
769 stream = self.stream |
|
33535
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
770 fs = "%s\n" |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
771 if not hasattr(types, "UnicodeType"): #if no unicode support... |
|
51475
c17f9281a856
Issue #5170: Fixed Unicode output bug in logging and added test case. This is a regression which did not occur in 2.5.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50951
diff
changeset
|
772 stream.write(fs % msg) |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
773 else: |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
774 try: |
|
53180
cf190ff2a72c
Issue #5768: Change to Unicode output logic and test case for same.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
52148
diff
changeset
|
775 if (isinstance(msg, unicode) and |
|
cf190ff2a72c
Issue #5768: Change to Unicode output logic and test case for same.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
52148
diff
changeset
|
776 getattr(stream, 'encoding', None)): |
|
53311
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
777 fs = fs.decode(stream.encoding) |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
778 try: |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
779 stream.write(fs % msg) |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
780 except UnicodeEncodeError: |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
781 #Printing to terminals sometimes fails. For example, |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
782 #with an encoding of 'cp1251', the above write will |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
783 #work if written to a stream opened or wrapped by |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
784 #the codecs module, but fail when writing to a |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
785 #terminal even when the codepage is set to cp1251. |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
786 #An extra encoding step seems to be needed. |
|
78bfd4481763
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53180
diff
changeset
|
787 stream.write((fs % msg).encode(stream.encoding)) |
|
53180
cf190ff2a72c
Issue #5768: Change to Unicode output logic and test case for same.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
52148
diff
changeset
|
788 else: |
|
51475
c17f9281a856
Issue #5170: Fixed Unicode output bug in logging and added test case. This is a regression which did not occur in 2.5.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50951
diff
changeset
|
789 stream.write(fs % msg) |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
790 except UnicodeError: |
|
51475
c17f9281a856
Issue #5170: Fixed Unicode output bug in logging and added test case. This is a regression which did not occur in 2.5.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50951
diff
changeset
|
791 stream.write(fs % msg.encode("UTF-8")) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
792 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
|
793 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
|
794 raise |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
795 except: |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
796 self.handleError(record) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
797 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
798 class FileHandler(StreamHandler): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
799 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
800 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
|
801 """ |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
802 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
|
803 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
804 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
|
805 """ |
|
40577
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
806 #keep the absolute path, otherwise derived classes which use this |
|
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
807 #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
|
808 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
|
809 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
|
810 self.baseFilename = os.path.abspath(filename) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
811 self.mode = mode |
|
40577
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
812 self.encoding = encoding |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
813 if delay: |
|
50949
7c30ab0134a1
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50257
diff
changeset
|
814 #We don't open the stream, but we still need to call the |
|
7c30ab0134a1
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50257
diff
changeset
|
815 #Handler constructor to set level, formatter, lock etc. |
|
7c30ab0134a1
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50257
diff
changeset
|
816 Handler.__init__(self) |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
817 self.stream = None |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
818 else: |
|
50949
7c30ab0134a1
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50257
diff
changeset
|
819 StreamHandler.__init__(self, self._open()) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
820 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
821 def close(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
822 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
823 Closes the stream. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
824 """ |
|
43441
b90286ab8629
Change to flush and close logic to fix #1760556.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
42751
diff
changeset
|
825 if self.stream: |
|
b90286ab8629
Change to flush and close logic to fix #1760556.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
42751
diff
changeset
|
826 self.flush() |
|
47745
8e85c46cf673
Bug #3126: StreamHandler and FileHandler check before calling "flush" and "close" that the stream object has these, using hasattr (thanks to bobf for the patch).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
47598
diff
changeset
|
827 if hasattr(self.stream, "close"): |
|
8e85c46cf673
Bug #3126: StreamHandler and FileHandler check before calling "flush" and "close" that the stream object has these, using hasattr (thanks to bobf for the patch).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
47598
diff
changeset
|
828 self.stream.close() |
|
43441
b90286ab8629
Change to flush and close logic to fix #1760556.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
42751
diff
changeset
|
829 StreamHandler.close(self) |
|
b90286ab8629
Change to flush and close logic to fix #1760556.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
42751
diff
changeset
|
830 self.stream = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
831 |
|
40577
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
832 def _open(self): |
| 40579 | 833 """ |
| 834 Open the current base file with the (original) mode and encoding. | |
| 835 Return the resulting stream. | |
| 836 """ | |
|
40577
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
837 if self.encoding is None: |
|
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
838 stream = open(self.baseFilename, self.mode) |
|
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
839 else: |
|
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
840 stream = codecs.open(self.baseFilename, self.mode, self.encoding) |
|
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
841 return stream |
|
92dd2bb94ca9
Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
40575
diff
changeset
|
842 |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
843 def emit(self, record): |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
844 """ |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
845 Emit a record. |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
846 |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
847 If the stream was not opened because 'delay' was specified in the |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
848 constructor, open it before calling the superclass's emit. |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
849 """ |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
850 if self.stream is None: |
|
50949
7c30ab0134a1
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50257
diff
changeset
|
851 self.stream = self._open() |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
852 StreamHandler.emit(self, record) |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
853 |
|
26183
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 # Manager classes and functions |
|
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 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
858 class PlaceHolder: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
859 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
860 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
|
861 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
|
862 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
|
863 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
864 def __init__(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
865 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
866 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
|
867 """ |
|
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
|
868 #self.loggers = [alogger] |
|
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
|
869 self.loggerMap = { alogger : None } |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
870 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
871 def append(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
872 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
873 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
|
874 """ |
|
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
|
875 #if alogger not in self.loggers: |
|
50257
e4675113d10e
Merged revisions 67654,67676-67677,67681,67692,67725,67746,67748,67761,67784-67785,67787-67788,67802,67832,67848-67849,67859,67862-67864,67880,67882,67885,67889-67892,67895 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
49009
diff
changeset
|
876 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
|
877 #self.loggers.append(alogger) |
|
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
|
878 self.loggerMap[alogger] = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
879 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
880 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
881 # Determine which class to use when instantiating loggers. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
882 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
883 _loggerClass = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
884 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
885 def setLoggerClass(klass): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
886 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
887 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
|
888 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
|
889 __init__() should call Logger.__init__() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
890 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
891 if klass != Logger: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
892 if not issubclass(klass, Logger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
893 raise TypeError, "logger not derived from logging.Logger: " + \ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
894 klass.__name__ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
895 global _loggerClass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
896 _loggerClass = klass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
897 |
|
33535
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
898 def getLoggerClass(): |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
899 """ |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
900 Return the class to be used when instantiating a logger. |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
901 """ |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
902 |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
903 return _loggerClass |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
904 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
905 class Manager: |
|
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 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
|
908 holds the hierarchy of loggers. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
909 """ |
|
26257
f23c35f81033
SF Patch #638825 logging module
Neal Norwitz <nnorwitz@gmail.com>
parents:
26184
diff
changeset
|
910 def __init__(self, rootnode): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
911 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
912 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
|
913 """ |
|
26257
f23c35f81033
SF Patch #638825 logging module
Neal Norwitz <nnorwitz@gmail.com>
parents:
26184
diff
changeset
|
914 self.root = rootnode |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
915 self.disable = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
916 self.emittedNoHandlerWarning = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
917 self.loggerDict = {} |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
918 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
919 def getLogger(self, name): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
920 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
921 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
|
922 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
|
923 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
|
924 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
925 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
|
926 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
|
927 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
|
928 placeholder to now point to the logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
929 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
930 rv = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
931 _acquireLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
932 try: |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
933 if name in self.loggerDict: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
934 rv = self.loggerDict[name] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
935 if isinstance(rv, PlaceHolder): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
936 ph = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
937 rv = _loggerClass(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
938 rv.manager = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
939 self.loggerDict[name] = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
940 self._fixupChildren(ph, rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
941 self._fixupParents(rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
942 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
943 rv = _loggerClass(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
944 rv.manager = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
945 self.loggerDict[name] = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
946 self._fixupParents(rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
947 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
948 _releaseLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
949 return rv |
|
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 def _fixupParents(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
952 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
953 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
|
954 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
|
955 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
956 name = alogger.name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
957 i = string.rfind(name, ".") |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
958 rv = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
959 while (i > 0) and not rv: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
960 substr = name[:i] |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
961 if substr not in self.loggerDict: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
962 self.loggerDict[substr] = PlaceHolder(alogger) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
963 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
964 obj = self.loggerDict[substr] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
965 if isinstance(obj, Logger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
966 rv = obj |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
967 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
968 assert isinstance(obj, PlaceHolder) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
969 obj.append(alogger) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
970 i = string.rfind(name, ".", 0, i - 1) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
971 if not rv: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
972 rv = self.root |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
973 alogger.parent = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
974 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
975 def _fixupChildren(self, ph, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
976 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
977 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
|
978 specified logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
979 """ |
|
40275
b820406852a0
Change to improve speed of _fixupChildren
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
39959
diff
changeset
|
980 name = alogger.name |
|
b820406852a0
Change to improve speed of _fixupChildren
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
39959
diff
changeset
|
981 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
|
982 for c in ph.loggerMap.keys(): |
|
40275
b820406852a0
Change to improve speed of _fixupChildren
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
39959
diff
changeset
|
983 #The if means ... if not c.parent.name.startswith(nm) |
|
b820406852a0
Change to improve speed of _fixupChildren
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
39959
diff
changeset
|
984 #if string.find(c.parent.name, nm) <> 0: |
|
b820406852a0
Change to improve speed of _fixupChildren
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
39959
diff
changeset
|
985 if c.parent.name[:namelen] != name: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
986 alogger.parent = c.parent |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
987 c.parent = alogger |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
988 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
989 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
990 # Logger classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
991 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
992 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
993 class Logger(Filterer): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
994 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
995 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
|
996 "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
|
997 "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
|
998 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
|
999 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
|
1000 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
|
1001 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
|
1002 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
|
1003 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
|
1004 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
|
1005 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
|
1006 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
|
1007 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1008 def __init__(self, name, level=NOTSET): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1009 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1010 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
|
1011 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1012 Filterer.__init__(self) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1013 self.name = name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1014 self.level = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1015 self.parent = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1016 self.propagate = 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1017 self.handlers = [] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1018 self.disabled = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1019 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1020 def setLevel(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1021 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1022 Set the logging level of this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1023 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1024 self.level = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1025 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1026 def debug(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1027 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1028 Log 'msg % args' with severity 'DEBUG'. |
|
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 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
|
1031 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1032 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1033 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
|
1034 """ |
|
42751
2073ea3005a7
Patch #1779550: remove redundant code in logging.
Georg Brandl <georg@python.org>
parents:
42114
diff
changeset
|
1035 if self.isEnabledFor(DEBUG): |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1036 self._log(DEBUG, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1037 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1038 def info(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1039 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1040 Log 'msg % args' with severity 'INFO'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1041 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1042 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
|
1043 a true value, e.g. |
|
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 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
|
1046 """ |
|
42751
2073ea3005a7
Patch #1779550: remove redundant code in logging.
Georg Brandl <georg@python.org>
parents:
42114
diff
changeset
|
1047 if self.isEnabledFor(INFO): |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1048 self._log(INFO, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1049 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1050 def warning(self, msg, *args, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1051 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1052 Log 'msg % args' with severity 'WARNING'. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1053 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1054 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
|
1055 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1056 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1057 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
|
1058 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1059 if self.isEnabledFor(WARNING): |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1060 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
|
1061 |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1062 warn = warning |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1063 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1064 def error(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1065 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1066 Log 'msg % args' with severity 'ERROR'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1067 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1068 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
|
1069 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1070 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1071 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
|
1072 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1073 if self.isEnabledFor(ERROR): |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1074 self._log(ERROR, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1075 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1076 def exception(self, msg, *args): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1077 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1078 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
|
1079 """ |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1080 self.error(*((msg,) + args), **{'exc_info': 1}) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1081 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1082 def critical(self, msg, *args, **kwargs): |
|
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 Log 'msg % args' with severity 'CRITICAL'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1085 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1086 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
|
1087 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1088 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1089 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
|
1090 """ |
|
42751
2073ea3005a7
Patch #1779550: remove redundant code in logging.
Georg Brandl <georg@python.org>
parents:
42114
diff
changeset
|
1091 if self.isEnabledFor(CRITICAL): |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1092 self._log(CRITICAL, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1093 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1094 fatal = critical |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1095 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1096 def log(self, level, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1097 """ |
|
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
|
1098 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
|
1099 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1100 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
|
1101 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1102 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1103 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
|
1104 """ |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1105 if type(level) != types.IntType: |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1106 if raiseExceptions: |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1107 raise TypeError, "level must be an integer" |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1108 else: |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1109 return |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1110 if self.isEnabledFor(level): |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1111 self._log(level, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1112 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1113 def findCaller(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1114 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1115 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
|
1116 file name, line number and function name. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1117 """ |
|
56281
a8d0e764e34b
Issue #7014: logging: Improved IronPython 2.6 compatibility.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53946
diff
changeset
|
1118 f = currentframe() |
|
a8d0e764e34b
Issue #7014: logging: Improved IronPython 2.6 compatibility.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53946
diff
changeset
|
1119 #On some versions of IronPython, currentframe() returns None if |
|
a8d0e764e34b
Issue #7014: logging: Improved IronPython 2.6 compatibility.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53946
diff
changeset
|
1120 #IronPython isn't run with -X:Frames. |
|
a8d0e764e34b
Issue #7014: logging: Improved IronPython 2.6 compatibility.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53946
diff
changeset
|
1121 if f is not None: |
|
a8d0e764e34b
Issue #7014: logging: Improved IronPython 2.6 compatibility.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53946
diff
changeset
|
1122 f = f.f_back |
|
36999
179084899d96
Catch situations where currentframe() returns None. See SF patch #1447410, this is a different implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36974
diff
changeset
|
1123 rv = "(unknown file)", 0, "(unknown function)" |
|
179084899d96
Catch situations where currentframe() returns None. See SF patch #1447410, this is a different implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36974
diff
changeset
|
1124 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
|
1125 co = f.f_code |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1126 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
|
1127 if filename == _srcfile: |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1128 f = f.f_back |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1129 continue |
|
36999
179084899d96
Catch situations where currentframe() returns None. See SF patch #1447410, this is a different implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36974
diff
changeset
|
1130 rv = (filename, f.f_lineno, co.co_name) |
|
179084899d96
Catch situations where currentframe() returns None. See SF patch #1447410, this is a different implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36974
diff
changeset
|
1131 break |
|
179084899d96
Catch situations where currentframe() returns None. See SF patch #1447410, this is a different implementation.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36974
diff
changeset
|
1132 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1133 |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
1134 def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1135 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1136 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
|
1137 specialized LogRecords. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1138 """ |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
1139 rv = LogRecord(name, level, fn, lno, msg, args, exc_info, func) |
|
44745
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1140 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
|
1141 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
|
1142 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
|
1143 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
|
1144 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
|
1145 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1146 |
|
36468
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1147 def _log(self, level, msg, args, exc_info=None, extra=None): |
|
26183
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 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
|
1150 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
|
1151 """ |
|
27349
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1152 if _srcfile: |
|
51693
85407d047782
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51475
diff
changeset
|
1153 #IronPython doesn't track Python frames, so findCaller throws an |
|
85407d047782
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51475
diff
changeset
|
1154 #exception. We trap it here so that IronPython can use logging. |
|
85407d047782
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51475
diff
changeset
|
1155 try: |
|
85407d047782
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51475
diff
changeset
|
1156 fn, lno, func = self.findCaller() |
|
85407d047782
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51475
diff
changeset
|
1157 except ValueError: |
|
85407d047782
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51475
diff
changeset
|
1158 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
|
1159 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
|
1160 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
|
1161 if exc_info: |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1162 if type(exc_info) != types.TupleType: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1163 exc_info = sys.exc_info() |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
1164 record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1165 self.handle(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1166 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1167 def handle(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1168 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1169 Call the handlers for the specified record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1170 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1171 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
|
1172 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
|
1173 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1174 if (not self.disabled) and self.filter(record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1175 self.callHandlers(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1176 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1177 def addHandler(self, hdlr): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1178 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1179 Add the specified handler to this logger. |
|
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 if not (hdlr in self.handlers): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1182 self.handlers.append(hdlr) |
|
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 def removeHandler(self, hdlr): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1185 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1186 Remove the specified handler from this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1187 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1188 if hdlr in self.handlers: |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1189 #hdlr.close() |
|
35582
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1190 hdlr.acquire() |
|
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1191 try: |
|
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1192 self.handlers.remove(hdlr) |
|
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1193 finally: |
|
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1194 hdlr.release() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1195 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1196 def callHandlers(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1197 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1198 Pass a record to all relevant handlers. |
|
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 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
|
1201 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
|
1202 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
|
1203 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
|
1204 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
|
1205 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1206 c = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1207 found = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1208 while c: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1209 for hdlr in c.handlers: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1210 found = found + 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1211 if record.levelno >= hdlr.level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1212 hdlr.handle(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1213 if not c.propagate: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1214 c = None #break out |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1215 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1216 c = c.parent |
|
35787
1661e73c07ab
One-off "No handlers..." error message only raised if raiseExceptions is set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35749
diff
changeset
|
1217 if (found == 0) and raiseExceptions and not self.manager.emittedNoHandlerWarning: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1218 sys.stderr.write("No handlers could be found for logger" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1219 " \"%s\"\n" % self.name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1220 self.manager.emittedNoHandlerWarning = 1 |
|
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 def getEffectiveLevel(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1223 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1224 Get the effective level for this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1225 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1226 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
|
1227 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
|
1228 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1229 logger = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1230 while logger: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1231 if logger.level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1232 return logger.level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1233 logger = logger.parent |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1234 return NOTSET |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1235 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1236 def isEnabledFor(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1237 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1238 Is this logger enabled for level 'level'? |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1239 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1240 if self.manager.disable >= level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1241 return 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1242 return level >= self.getEffectiveLevel() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1243 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1244 class RootLogger(Logger): |
|
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 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
|
1247 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
|
1248 the hierarchy. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1249 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1250 def __init__(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1251 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1252 Initialize the logger with the name "root". |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1253 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1254 Logger.__init__(self, "root", level) |
|
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 _loggerClass = Logger |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1257 |
|
44745
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1258 class LoggerAdapter: |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1259 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1260 An adapter for loggers which makes it easier to specify contextual |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1261 information in logging output. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1262 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1263 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1264 def __init__(self, logger, extra): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1265 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1266 Initialize the adapter with a logger and a dict-like object which |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1267 provides contextual information. This constructor signature allows |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1268 easy stacking of LoggerAdapters, if so desired. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1269 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1270 You can effectively pass keyword arguments as shown in the |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1271 following example: |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1272 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1273 adapter = LoggerAdapter(someLogger, dict(p1=v1, p2="v2")) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1274 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1275 self.logger = logger |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1276 self.extra = extra |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1277 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1278 def process(self, msg, kwargs): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1279 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1280 Process the logging message and keyword arguments passed in to |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1281 a logging call to insert contextual information. You can either |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1282 manipulate the message itself, the keyword args or both. Return |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1283 the message and kwargs modified (or not) to suit your needs. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1284 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1285 Normally, you'll only need to override this one method in a |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1286 LoggerAdapter subclass for your specific needs. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1287 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1288 kwargs["extra"] = self.extra |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1289 return msg, kwargs |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1290 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1291 def debug(self, msg, *args, **kwargs): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1292 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1293 Delegate a debug call to the underlying logger, after adding |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1294 contextual information from this adapter instance. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1295 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1296 msg, kwargs = self.process(msg, kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1297 self.logger.debug(msg, *args, **kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1298 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1299 def info(self, msg, *args, **kwargs): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1300 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1301 Delegate an info call to the underlying logger, after adding |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1302 contextual information from this adapter instance. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1303 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1304 msg, kwargs = self.process(msg, kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1305 self.logger.info(msg, *args, **kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1306 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1307 def warning(self, msg, *args, **kwargs): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1308 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1309 Delegate a warning call to the underlying logger, after adding |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1310 contextual information from this adapter instance. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1311 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1312 msg, kwargs = self.process(msg, kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1313 self.logger.warning(msg, *args, **kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1314 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1315 def error(self, msg, *args, **kwargs): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1316 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1317 Delegate an error call to the underlying logger, after adding |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1318 contextual information from this adapter instance. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1319 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1320 msg, kwargs = self.process(msg, kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1321 self.logger.error(msg, *args, **kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1322 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1323 def exception(self, msg, *args, **kwargs): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1324 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1325 Delegate an exception call to the underlying logger, after adding |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1326 contextual information from this adapter instance. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1327 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1328 msg, kwargs = self.process(msg, kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1329 kwargs["exc_info"] = 1 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1330 self.logger.error(msg, *args, **kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1331 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1332 def critical(self, msg, *args, **kwargs): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1333 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1334 Delegate a critical call to the underlying logger, after adding |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1335 contextual information from this adapter instance. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1336 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1337 msg, kwargs = self.process(msg, kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1338 self.logger.critical(msg, *args, **kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1339 |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1340 def log(self, level, msg, *args, **kwargs): |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1341 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1342 Delegate a log call to the underlying logger, after adding |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1343 contextual information from this adapter instance. |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1344 """ |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1345 msg, kwargs = self.process(msg, kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1346 self.logger.log(level, msg, *args, **kwargs) |
|
dbf0856776dd
Added LoggerAdapter class, changed copyright dates, made check for extra parameter passed to logging methods explicitly against None rather than a truth value.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43445
diff
changeset
|
1347 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1348 root = RootLogger(WARNING) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1349 Logger.root = root |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1350 Logger.manager = Manager(Logger.root) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1351 |
|
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 # Configuration classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1354 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1355 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1356 BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1357 |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1358 def basicConfig(**kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1359 """ |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1360 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
|
1361 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1362 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
|
1363 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
|
1364 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
|
1365 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1366 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
|
1367 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
|
1368 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
|
1369 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1370 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
|
1371 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
|
1372 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1373 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
|
1374 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
|
1375 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
|
1376 (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
|
1377 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
|
1378 datefmt Use the specified date/time format. |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1379 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
|
1380 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
|
1381 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
|
1382 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
|
1383 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1384 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
|
1385 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
|
1386 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
|
1387 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
|
1388 when the handler is closed. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1389 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1390 if len(root.handlers) == 0: |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1391 filename = kwargs.get("filename") |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1392 if filename: |
|
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
|
1393 mode = kwargs.get("filemode", 'a') |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1394 hdlr = FileHandler(filename, mode) |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1395 else: |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1396 stream = kwargs.get("stream") |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1397 hdlr = StreamHandler(stream) |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1398 fs = kwargs.get("format", BASIC_FORMAT) |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1399 dfs = kwargs.get("datefmt", None) |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1400 fmt = Formatter(fs, dfs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1401 hdlr.setFormatter(fmt) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1402 root.addHandler(hdlr) |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1403 level = kwargs.get("level") |
|
43442
856f8ea922df
Change to basicConfig() to fix #1021.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43441
diff
changeset
|
1404 if level is not None: |
|
32528
67539cfcf09f
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
32479
diff
changeset
|
1405 root.setLevel(level) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1406 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1407 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1408 # Utility functions at module level. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1409 # Basically delegate everything to the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1410 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1411 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1412 def getLogger(name=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1413 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1414 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
|
1415 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1416 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
|
1417 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1418 if name: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1419 return Logger.manager.getLogger(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1420 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1421 return root |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1422 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1423 #def getRootLogger(): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1424 # """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1425 # Return the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1426 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1427 # Note that getLogger('') now does the same thing, so this function is |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1428 # deprecated and may disappear in the future. |
|
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 # return root |
|
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 def critical(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1433 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1434 Log a message with severity 'CRITICAL' on the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1435 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1436 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1437 basicConfig() |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1438 root.critical(*((msg,)+args), **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1439 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1440 fatal = critical |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1441 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1442 def error(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1443 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1444 Log a message with severity 'ERROR' on the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1445 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1446 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1447 basicConfig() |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1448 root.error(*((msg,)+args), **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1449 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1450 def exception(msg, *args): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1451 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1452 Log a message with severity 'ERROR' on the root logger, |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1453 with exception information. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1454 """ |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1455 error(*((msg,)+args), **{'exc_info': 1}) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1456 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1457 def warning(msg, *args, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1458 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1459 Log a message with severity 'WARNING' on the root logger. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1460 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1461 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1462 basicConfig() |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1463 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
|
1464 |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1465 warn = warning |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1466 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1467 def info(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1468 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1469 Log a message with severity 'INFO' on the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1470 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1471 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1472 basicConfig() |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1473 root.info(*((msg,)+args), **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1474 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1475 def debug(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1476 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1477 Log a message with severity 'DEBUG' on the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1478 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1479 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1480 basicConfig() |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1481 root.debug(*((msg,)+args), **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1482 |
|
33556
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1483 def log(level, msg, *args, **kwargs): |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1484 """ |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1485 Log 'msg % args' with the integer severity 'level' on the root logger. |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1486 """ |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1487 if len(root.handlers) == 0: |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1488 basicConfig() |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1489 root.log(*((level, msg)+args), **kwargs) |
|
33556
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1490 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1491 def disable(level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1492 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1493 Disable all logging calls less severe than 'level'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1494 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1495 root.manager.disable = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1496 |
|
39439
1087df00a6e8
logging's atexit hook now runs even if the rest of the module has
Georg Brandl <georg@python.org>
parents:
38214
diff
changeset
|
1497 def shutdown(handlerList=_handlerList): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1498 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1499 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
|
1500 buffers). |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1501 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1502 Should be called at application exit. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1503 """ |
|
39439
1087df00a6e8
logging's atexit hook now runs even if the rest of the module has
Georg Brandl <georg@python.org>
parents:
38214
diff
changeset
|
1504 for h in handlerList[:]: |
|
32856
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1505 #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
|
1506 #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
|
1507 try: |
|
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1508 h.flush() |
|
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1509 h.close() |
|
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1510 except: |
|
36468
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1511 if raiseExceptions: |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1512 raise |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1513 #else, swallow |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1514 |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1515 #Let's try and shutdown automatically on application exit... |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1516 try: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1517 import atexit |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1518 atexit.register(shutdown) |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1519 except ImportError: # for Python versions < 2.0 |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1520 def exithook(status, old_exit=sys.exit): |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1521 try: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1522 shutdown() |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1523 finally: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1524 old_exit(status) |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1525 |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1526 sys.exit = exithook |
