Mercurial > cpython-lru_cache-weakref
annotate Lib/logging/__init__.py @ 54294:dba767bc3155 legacy-trunk
remove mention of old ctypes version
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Sat, 23 May 2009 20:59:09 +0000 |
| parents | 072a8a7ce973 |
| children | 40afb65536da |
| rev | line source |
|---|---|
|
50948
766de496a42d
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50880
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 |
|
50948
766de496a42d
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50880
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', |
|
53503
973d24f44b07
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:
53310
diff
changeset
|
27 'FATAL', 'FileHandler', 'Filter', 'Formatter', 'Handler', 'INFO', |
|
973d24f44b07
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:
53310
diff
changeset
|
28 'LogRecord', 'Logger', 'LoggerAdapter', 'NOTSET', 'NullHandler', |
|
973d24f44b07
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:
53310
diff
changeset
|
29 'StreamHandler', 'WARN', 'WARNING', 'addLevelName', 'basicConfig', |
|
973d24f44b07
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:
53310
diff
changeset
|
30 'captureWarnings', 'critical', 'debug', 'disable', 'error', |
|
973d24f44b07
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:
53310
diff
changeset
|
31 'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass', |
|
973d24f44b07
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:
53310
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 |
|
49978
9f8e51fdcea0
Took Nick Coghlan's advice about importing warnings globally in logging, to avoid the possibility of race conditions: "This could deadlock if a thread spawned as a side effect of importing a module happens to trigger a warning. warnings is pulled into sys.modules as part of the interpreter startup - having a global 'import warnings' shouldn't have any real effect on logging's import time."
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49955
diff
changeset
|
34 import sys, os, types, time, string, cStringIO, traceback, warnings |
|
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
|
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" |
|
53503
973d24f44b07
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:
53310
diff
changeset
|
49 __version__ = "0.5.0.8" |
|
973d24f44b07
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:
53310
diff
changeset
|
50 __date__ = "27 April 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 # |
|
50880
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
103 # If you don't want multiprocessing information in the log, set this to zero |
|
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
104 # |
|
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
105 logMultiprocessing = 1 |
|
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
106 |
|
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
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 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
189 _lock = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
190 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
191 def _acquireLock(): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
192 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
193 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
|
194 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
195 This should be released with _releaseLock(). |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
196 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
197 global _lock |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
198 if (not _lock) and thread: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
199 _lock = threading.RLock() |
|
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 |
|
50880
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
274 if logMultiprocessing: |
|
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
275 from multiprocessing import current_process |
|
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
276 self.processName = current_process().name |
|
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
277 else: |
|
c1c44a0ab438
issue 4301: patch logging to add processName, remove the old _check_logger_class code
Jesse Noller <jnoller@gmail.com>
parents:
50158
diff
changeset
|
278 self.processName = None |
|
36974
29e6e7a107de
Added logThreads and logProcesses to allow conditional omission of logging this information
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36469
diff
changeset
|
279 if logProcesses and hasattr(os, 'getpid'): |
|
28019
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
280 self.process = os.getpid() |
|
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
281 else: |
|
32a0c2f422f1
getpid doesn't exist on MacOS9.
Jack Jansen <jack.jansen@cwi.nl>
parents:
27932
diff
changeset
|
282 self.process = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
283 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
284 def __str__(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
285 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
|
286 self.pathname, self.lineno, self.msg) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
287 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
288 def getMessage(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
289 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
290 Return the message for this LogRecord. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
291 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
292 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
|
293 arguments with the message. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
294 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
295 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
|
296 msg = str(self.msg) |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
297 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
|
298 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
|
299 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
|
300 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
|
301 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
|
302 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
|
303 msg = self.msg #Defer encoding till later |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
304 if self.args: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
305 msg = msg % self.args |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
306 return msg |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
307 |
|
29624
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
308 def makeLogRecord(dict): |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
309 """ |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
310 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
|
311 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
|
312 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
|
313 instance. |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
314 """ |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
315 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
|
316 rv.__dict__.update(dict) |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
317 return rv |
|
a464020f15d6
SF patch #761519: Fixes for bugs 760703 and 757821
Raymond Hettinger <python@rcn.com>
parents:
28739
diff
changeset
|
318 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
319 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
320 # Formatter classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
321 #--------------------------------------------------------------------------- |
|
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 class Formatter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
324 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
325 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
|
326 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
327 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
|
328 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
|
329 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
|
330 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
|
331 default value of "%s(message)\\n" is used. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
332 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
333 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
|
334 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
|
335 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
|
336 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
|
337 attributes in a LogRecord are described by: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
338 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
339 %(name)s Name of the logger (logging channel) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
340 %(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
|
341 WARNING, ERROR, CRITICAL) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
342 %(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
|
343 "WARNING", "ERROR", "CRITICAL") |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
344 %(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
|
345 call was issued (if available) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
346 %(filename)s Filename portion of pathname |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
347 %(module)s Module (name portion of filename) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
348 %(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
|
349 (if available) |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
350 %(funcName)s Function name |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
351 %(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
|
352 return value) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
353 %(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
|
354 %(msecs)d Millisecond portion of the creation time |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
355 %(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
|
356 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
|
357 (typically at application startup time) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
358 %(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
|
359 %(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
|
360 %(process)d Process ID (if available) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
361 %(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
|
362 the record is emitted |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
363 """ |
|
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 converter = time.localtime |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
366 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
367 def __init__(self, fmt=None, datefmt=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
368 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
369 Initialize the formatter with specified format strings. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
370 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
371 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
|
372 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
|
373 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
|
374 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
375 if fmt: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
376 self._fmt = fmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
377 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
378 self._fmt = "%(message)s" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
379 self.datefmt = datefmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
380 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
381 def formatTime(self, record, datefmt=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
382 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
383 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
|
384 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
385 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
|
386 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
|
387 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
|
388 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
|
389 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
|
390 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
|
391 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
|
392 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
|
393 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
|
394 '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
|
395 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
|
396 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
|
397 set the 'converter' attribute in the Formatter class. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
398 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
399 ct = self.converter(record.created) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
400 if datefmt: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
401 s = time.strftime(datefmt, ct) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
402 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
403 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
|
404 s = "%s,%03d" % (t, record.msecs) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
405 return s |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
406 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
407 def formatException(self, ei): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
408 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
409 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
|
410 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
411 This default implementation just uses |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
412 traceback.print_exception() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
413 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
414 sio = cStringIO.StringIO() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
415 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
|
416 s = sio.getvalue() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
417 sio.close() |
|
42114
aab9080ac4c7
Bug #1737864: allow empty message in logging format routines.
Georg Brandl <georg@python.org>
parents:
40859
diff
changeset
|
418 if s[-1:] == "\n": |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
419 s = s[:-1] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
420 return s |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
421 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
422 def format(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
423 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
424 Format the specified record as text. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
425 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
426 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
|
427 string formatting operation which yields the returned string. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
428 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
|
429 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
|
430 using LogRecord.getMessage(). If the formatting string contains |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
431 "%(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
|
432 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
|
433 formatException() and appended to the message. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
434 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
435 record.message = record.getMessage() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
436 if string.find(self._fmt,"%(asctime)") >= 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
437 record.asctime = self.formatTime(record, self.datefmt) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
438 s = self._fmt % record.__dict__ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
439 if record.exc_info: |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
440 # 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
|
441 # (it's constant anyway) |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
442 if not record.exc_text: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
443 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
|
444 if record.exc_text: |
|
42114
aab9080ac4c7
Bug #1737864: allow empty message in logging format routines.
Georg Brandl <georg@python.org>
parents:
40859
diff
changeset
|
445 if s[-1:] != "\n": |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
446 s = s + "\n" |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
447 s = s + record.exc_text |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
448 return s |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
449 |
|
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 # 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
|
452 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
453 _defaultFormatter = Formatter() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
454 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
455 class BufferingFormatter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
456 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
457 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
|
458 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
459 def __init__(self, linefmt=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
460 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
461 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
|
462 individual record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
463 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
464 if linefmt: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
465 self.linefmt = linefmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
466 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
467 self.linefmt = _defaultFormatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
468 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
469 def formatHeader(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
470 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
471 Return the header string for the specified records. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
472 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
473 return "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
474 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
475 def formatFooter(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
476 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
477 Return the footer string for the specified records. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
478 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
479 return "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
480 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
481 def format(self, records): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
482 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
483 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
|
484 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
485 rv = "" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
486 if len(records) > 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
487 rv = rv + self.formatHeader(records) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
488 for record in records: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
489 rv = rv + self.linefmt.format(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
490 rv = rv + self.formatFooter(records) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
491 return rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
492 |
|
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 # Filter classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
495 #--------------------------------------------------------------------------- |
|
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 class Filter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
498 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
499 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
|
500 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
501 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
|
502 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
|
503 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
|
504 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
|
505 "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
|
506 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
|
507 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
508 def __init__(self, name=''): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
509 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
510 Initialize a filter. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
511 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
512 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
|
513 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
|
514 name is specified, allow every event. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
515 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
516 self.name = name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
517 self.nlen = len(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
518 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
519 def filter(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
520 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
521 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
|
522 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
523 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
|
524 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
|
525 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
526 if self.nlen == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
527 return 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
528 elif self.name == record.name: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
529 return 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
530 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
|
531 return 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
532 return (record.name[self.nlen] == ".") |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
533 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
534 class Filterer: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
535 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
536 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
|
537 common code. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
538 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
539 def __init__(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
540 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
541 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
|
542 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
543 self.filters = [] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
544 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
545 def addFilter(self, filter): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
546 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
547 Add the specified filter to this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
548 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
549 if not (filter in self.filters): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
550 self.filters.append(filter) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
551 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
552 def removeFilter(self, filter): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
553 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
554 Remove the specified filter from this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
555 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
556 if filter in self.filters: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
557 self.filters.remove(filter) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
558 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
559 def filter(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
560 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
561 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
|
562 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
563 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
|
564 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
|
565 is to be dropped, else non-zero. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
566 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
567 rv = 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
568 for f in self.filters: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
569 if not f.filter(record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
570 rv = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
571 break |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
572 return rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
573 |
|
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 # Handler classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
576 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
577 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
578 _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
|
579 _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
|
580 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
581 class Handler(Filterer): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
582 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
583 Handler instances dispatch logging events to specific destinations. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
584 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
585 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
|
586 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
|
587 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
|
588 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
|
589 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
590 def __init__(self, level=NOTSET): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
591 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
592 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
|
593 and the filter list to empty. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
594 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
595 Filterer.__init__(self) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
596 self.level = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
597 self.formatter = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
598 #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
|
599 _acquireLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
600 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
|
601 _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
|
602 _handlerList.insert(0, self) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
603 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
604 _releaseLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
605 self.createLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
606 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
607 def createLock(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
608 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
609 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
|
610 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
611 if thread: |
|
34858
2ea3d6915204
Added threadName and now using re-entrant lock
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
34744
diff
changeset
|
612 self.lock = threading.RLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
613 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
614 self.lock = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
615 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
616 def acquire(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
617 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
618 Acquire the I/O thread lock. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
619 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
620 if self.lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
621 self.lock.acquire() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
622 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
623 def release(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
624 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
625 Release the I/O thread lock. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
626 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
627 if self.lock: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
628 self.lock.release() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
629 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
630 def setLevel(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
631 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
632 Set the logging level of this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
633 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
634 self.level = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
635 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
636 def format(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
637 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
638 Format the specified record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
639 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
640 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
|
641 for the module. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
642 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
643 if self.formatter: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
644 fmt = self.formatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
645 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
646 fmt = _defaultFormatter |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
647 return fmt.format(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
648 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
649 def emit(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
650 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
651 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
|
652 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
653 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
|
654 raises a NotImplementedError. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
655 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
656 raise NotImplementedError, 'emit must be implemented '\ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
657 'by Handler subclasses' |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
658 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
659 def handle(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
660 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
661 Conditionally emit the specified logging record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
662 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
663 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
|
664 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
|
665 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
|
666 emission. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
667 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
668 rv = self.filter(record) |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
669 if rv: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
670 self.acquire() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
671 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
672 self.emit(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
673 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
674 self.release() |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
675 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
676 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
677 def setFormatter(self, fmt): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
678 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
679 Set the formatter for this handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
680 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
681 self.formatter = fmt |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
682 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
683 def flush(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
684 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
685 Ensure all logging output has been flushed. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
686 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
687 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
|
688 subclasses. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
689 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
690 pass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
691 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
692 def close(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
693 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
694 Tidy up any resources used by the handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
695 |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
696 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
|
697 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
|
698 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
|
699 methods. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
700 """ |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
701 #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
|
702 _acquireLock() |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
703 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
|
704 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
|
705 _handlerList.remove(self) |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
706 finally: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
707 _releaseLock() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
708 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
709 def handleError(self, record): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
710 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
711 Handle errors which occur during an emit() call. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
712 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
713 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
|
714 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
|
715 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
|
716 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
|
717 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
|
718 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
|
719 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
|
720 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
721 if raiseExceptions: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
722 ei = sys.exc_info() |
|
53945
072a8a7ce973
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53503
diff
changeset
|
723 try: |
|
072a8a7ce973
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53503
diff
changeset
|
724 traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr) |
|
072a8a7ce973
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53503
diff
changeset
|
725 except IOError: |
|
072a8a7ce973
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53503
diff
changeset
|
726 pass # see issue 5971 |
|
072a8a7ce973
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53503
diff
changeset
|
727 finally: |
|
072a8a7ce973
Issue #5971: StreamHandler.handleError now swallows IOErrors which occur when trying to print a traceback.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53503
diff
changeset
|
728 del ei |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
729 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
730 class StreamHandler(Handler): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
731 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
732 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
|
733 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
|
734 sys.stdout or sys.stderr may be used. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
735 """ |
|
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
|
736 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
737 def __init__(self, strm=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
738 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
739 Initialize the handler. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
740 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
741 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
|
742 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
743 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
|
744 if strm is None: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
745 strm = sys.stderr |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
746 self.stream = strm |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
747 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
748 def flush(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
749 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
750 Flushes the stream. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
751 """ |
|
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
|
752 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
|
753 self.stream.flush() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
754 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
755 def emit(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
756 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
757 Emit a record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
758 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
759 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
|
760 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
|
761 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
|
762 traceback.print_exception and appended to the stream. If the stream |
|
53179
73bfcb398886
Issue #5768: Change to Unicode output logic and test case for same.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51739
diff
changeset
|
763 has an 'encoding' attribute, it is used to determine how to do the |
|
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
|
764 output to the stream. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
765 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
766 try: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
767 msg = self.format(record) |
|
51474
e49013f1d831
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:
50950
diff
changeset
|
768 stream = self.stream |
|
33535
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
769 fs = "%s\n" |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
770 if not hasattr(types, "UnicodeType"): #if no unicode support... |
|
51474
e49013f1d831
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:
50950
diff
changeset
|
771 stream.write(fs % msg) |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
772 else: |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
773 try: |
|
53179
73bfcb398886
Issue #5768: Change to Unicode output logic and test case for same.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51739
diff
changeset
|
774 if (isinstance(msg, unicode) and |
|
73bfcb398886
Issue #5768: Change to Unicode output logic and test case for same.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51739
diff
changeset
|
775 getattr(stream, 'encoding', None)): |
|
53310
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
776 fs = fs.decode(stream.encoding) |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
777 try: |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
778 stream.write(fs % msg) |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
779 except UnicodeEncodeError: |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
780 #Printing to terminals sometimes fails. For example, |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
781 #with an encoding of 'cp1251', the above write will |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
782 #work if written to a stream opened or wrapped by |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
783 #the codecs module, but fail when writing to a |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
784 #terminal even when the codepage is set to cp1251. |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
785 #An extra encoding step seems to be needed. |
|
f9f23f36c36c
Issue #5170: Fixed regression caused when fixing #5768.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
53179
diff
changeset
|
786 stream.write((fs % msg).encode(stream.encoding)) |
|
53179
73bfcb398886
Issue #5768: Change to Unicode output logic and test case for same.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51739
diff
changeset
|
787 else: |
|
51474
e49013f1d831
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:
50950
diff
changeset
|
788 stream.write(fs % msg) |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
789 except UnicodeError: |
|
51474
e49013f1d831
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:
50950
diff
changeset
|
790 stream.write(fs % msg.encode("UTF-8")) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
791 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
|
792 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
|
793 raise |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
794 except: |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
795 self.handleError(record) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
796 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
797 class FileHandler(StreamHandler): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
798 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
799 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
|
800 """ |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
801 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
|
802 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
803 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
|
804 """ |
|
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
|
805 #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
|
806 #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
|
807 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
|
808 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
|
809 self.baseFilename = os.path.abspath(filename) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
810 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
|
811 self.encoding = encoding |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
812 if delay: |
|
50948
766de496a42d
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50880
diff
changeset
|
813 #We don't open the stream, but we still need to call the |
|
766de496a42d
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50880
diff
changeset
|
814 #Handler constructor to set level, formatter, lock etc. |
|
766de496a42d
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50880
diff
changeset
|
815 Handler.__init__(self) |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
816 self.stream = None |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
817 else: |
|
50948
766de496a42d
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50880
diff
changeset
|
818 StreamHandler.__init__(self, self._open()) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
819 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
820 def close(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
821 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
822 Closes the stream. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
823 """ |
|
43441
b90286ab8629
Change to flush and close logic to fix #1760556.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
42751
diff
changeset
|
824 if self.stream: |
|
b90286ab8629
Change to flush and close logic to fix #1760556.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
42751
diff
changeset
|
825 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
|
826 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
|
827 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
|
828 StreamHandler.close(self) |
|
b90286ab8629
Change to flush and close logic to fix #1760556.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
42751
diff
changeset
|
829 self.stream = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
830 |
|
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
|
831 def _open(self): |
| 40579 | 832 """ |
| 833 Open the current base file with the (original) mode and encoding. | |
| 834 Return the resulting stream. | |
| 835 """ | |
|
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
|
836 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
|
837 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
|
838 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
|
839 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
|
840 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
|
841 |
|
44907
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
842 def emit(self, record): |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
843 """ |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
844 Emit a record. |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
845 |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
846 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
|
847 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
|
848 """ |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
849 if self.stream is None: |
|
50948
766de496a42d
Issue 5013: Fixed bug in FileHandler when delay was set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
50880
diff
changeset
|
850 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
|
851 StreamHandler.emit(self, record) |
|
f3a9ad448cca
Added optional delay argument to FileHandler and subclasses.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
44745
diff
changeset
|
852 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
853 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
854 # Manager classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
855 #--------------------------------------------------------------------------- |
|
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 class PlaceHolder: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
858 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
859 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
|
860 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
|
861 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
|
862 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
863 def __init__(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
864 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
865 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
|
866 """ |
|
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
|
867 #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
|
868 self.loggerMap = { alogger : None } |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
869 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
870 def append(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
871 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
872 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
|
873 """ |
|
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
|
874 #if alogger not in self.loggers: |
|
50158
a090aab575c6
remove has_key usage
Benjamin Peterson <benjamin@python.org>
parents:
49978
diff
changeset
|
875 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
|
876 #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
|
877 self.loggerMap[alogger] = None |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
878 |
|
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 # Determine which class to use when instantiating loggers. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
881 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
882 _loggerClass = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
883 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
884 def setLoggerClass(klass): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
885 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
886 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
|
887 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
|
888 __init__() should call Logger.__init__() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
889 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
890 if klass != Logger: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
891 if not issubclass(klass, Logger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
892 raise TypeError, "logger not derived from logging.Logger: " + \ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
893 klass.__name__ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
894 global _loggerClass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
895 _loggerClass = klass |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
896 |
|
33535
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
897 def getLoggerClass(): |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
898 """ |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
899 Return the class to be used when instantiating a logger. |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
900 """ |
|
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 return _loggerClass |
|
ecd654daaec9
Added getLoggerClass()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32955
diff
changeset
|
903 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
904 class Manager: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
905 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
906 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
|
907 holds the hierarchy of loggers. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
908 """ |
|
26257
f23c35f81033
SF Patch #638825 logging module
Neal Norwitz <nnorwitz@gmail.com>
parents:
26184
diff
changeset
|
909 def __init__(self, rootnode): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
910 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
911 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
|
912 """ |
|
26257
f23c35f81033
SF Patch #638825 logging module
Neal Norwitz <nnorwitz@gmail.com>
parents:
26184
diff
changeset
|
913 self.root = rootnode |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
914 self.disable = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
915 self.emittedNoHandlerWarning = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
916 self.loggerDict = {} |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
917 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
918 def getLogger(self, name): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
919 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
920 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
|
921 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
|
922 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
|
923 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
924 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
|
925 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
|
926 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
|
927 placeholder to now point to the logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
928 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
929 rv = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
930 _acquireLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
931 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
|
932 if name in self.loggerDict: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
933 rv = self.loggerDict[name] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
934 if isinstance(rv, PlaceHolder): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
935 ph = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
936 rv = _loggerClass(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
937 rv.manager = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
938 self.loggerDict[name] = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
939 self._fixupChildren(ph, rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
940 self._fixupParents(rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
941 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
942 rv = _loggerClass(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
943 rv.manager = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
944 self.loggerDict[name] = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
945 self._fixupParents(rv) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
946 finally: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
947 _releaseLock() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
948 return rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
949 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
950 def _fixupParents(self, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
951 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
952 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
|
953 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
|
954 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
955 name = alogger.name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
956 i = string.rfind(name, ".") |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
957 rv = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
958 while (i > 0) and not rv: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
959 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
|
960 if substr not in self.loggerDict: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
961 self.loggerDict[substr] = PlaceHolder(alogger) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
962 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
963 obj = self.loggerDict[substr] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
964 if isinstance(obj, Logger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
965 rv = obj |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
966 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
967 assert isinstance(obj, PlaceHolder) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
968 obj.append(alogger) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
969 i = string.rfind(name, ".", 0, i - 1) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
970 if not rv: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
971 rv = self.root |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
972 alogger.parent = rv |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
973 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
974 def _fixupChildren(self, ph, alogger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
975 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
976 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
|
977 specified logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
978 """ |
|
40275
b820406852a0
Change to improve speed of _fixupChildren
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
39959
diff
changeset
|
979 name = alogger.name |
|
b820406852a0
Change to improve speed of _fixupChildren
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
39959
diff
changeset
|
980 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
|
981 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
|
982 #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
|
983 #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
|
984 if c.parent.name[:namelen] != name: |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
985 alogger.parent = c.parent |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
986 c.parent = alogger |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
987 |
|
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 # Logger classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
990 #--------------------------------------------------------------------------- |
|
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 class Logger(Filterer): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
993 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
994 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
|
995 "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
|
996 "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
|
997 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
|
998 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
|
999 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
|
1000 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
|
1001 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
|
1002 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
|
1003 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
|
1004 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
|
1005 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
|
1006 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1007 def __init__(self, name, level=NOTSET): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1008 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1009 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
|
1010 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1011 Filterer.__init__(self) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1012 self.name = name |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1013 self.level = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1014 self.parent = None |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1015 self.propagate = 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1016 self.handlers = [] |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1017 self.disabled = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1018 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1019 def setLevel(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1020 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1021 Set the logging level of this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1022 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1023 self.level = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1024 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1025 def debug(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1026 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1027 Log 'msg % args' with severity 'DEBUG'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1028 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1029 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
|
1030 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1031 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1032 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
|
1033 """ |
|
42751
2073ea3005a7
Patch #1779550: remove redundant code in logging.
Georg Brandl <georg@python.org>
parents:
42114
diff
changeset
|
1034 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
|
1035 self._log(DEBUG, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1036 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1037 def info(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1038 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1039 Log 'msg % args' with severity 'INFO'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1040 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1041 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
|
1042 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1043 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1044 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
|
1045 """ |
|
42751
2073ea3005a7
Patch #1779550: remove redundant code in logging.
Georg Brandl <georg@python.org>
parents:
42114
diff
changeset
|
1046 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
|
1047 self._log(INFO, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1048 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1049 def warning(self, msg, *args, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1050 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1051 Log 'msg % args' with severity 'WARNING'. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1052 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1053 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
|
1054 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1055 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1056 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
|
1057 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1058 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
|
1059 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
|
1060 |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1061 warn = warning |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1062 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1063 def error(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1064 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1065 Log 'msg % args' with severity 'ERROR'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1066 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1067 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
|
1068 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1069 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1070 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
|
1071 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1072 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
|
1073 self._log(ERROR, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1074 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1075 def exception(self, msg, *args): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1076 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1077 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
|
1078 """ |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1079 self.error(*((msg,) + args), **{'exc_info': 1}) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1080 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1081 def critical(self, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1082 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1083 Log 'msg % args' with severity 'CRITICAL'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1084 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1085 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
|
1086 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1087 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1088 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
|
1089 """ |
|
42751
2073ea3005a7
Patch #1779550: remove redundant code in logging.
Georg Brandl <georg@python.org>
parents:
42114
diff
changeset
|
1090 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
|
1091 self._log(CRITICAL, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1092 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1093 fatal = critical |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1094 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1095 def log(self, level, msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1096 """ |
|
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
|
1097 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
|
1098 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1099 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
|
1100 a true value, e.g. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1101 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1102 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
|
1103 """ |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1104 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
|
1105 if raiseExceptions: |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1106 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
|
1107 else: |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1108 return |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1109 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
|
1110 self._log(level, msg, args, **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1111 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1112 def findCaller(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1113 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1114 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
|
1115 file name, line number and function name. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1116 """ |
|
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
|
1117 f = currentframe().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
|
1118 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
|
1119 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
|
1120 co = f.f_code |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1121 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
|
1122 if filename == _srcfile: |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1123 f = f.f_back |
|
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1124 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
|
1125 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
|
1126 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
|
1127 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1128 |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
1129 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
|
1130 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1131 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
|
1132 specialized LogRecords. |
|
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 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
|
1135 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
|
1136 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
|
1137 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
|
1138 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
|
1139 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
|
1140 return rv |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1141 |
|
36468
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1142 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
|
1143 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1144 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
|
1145 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
|
1146 """ |
|
27349
ddb52f5673db
Use lightweight introspection instead of the inspect module hammer.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
26257
diff
changeset
|
1147 if _srcfile: |
|
51739
8c13f430e160
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51474
diff
changeset
|
1148 #IronPython doesn't track Python frames, so findCaller throws an |
|
8c13f430e160
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51474
diff
changeset
|
1149 #exception. We trap it here so that IronPython can use logging. |
|
8c13f430e160
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51474
diff
changeset
|
1150 try: |
|
8c13f430e160
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51474
diff
changeset
|
1151 fn, lno, func = self.findCaller() |
|
8c13f430e160
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51474
diff
changeset
|
1152 except ValueError: |
|
8c13f430e160
#5287: Add exception handling around findCaller() call to help out IronPython.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
51474
diff
changeset
|
1153 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
|
1154 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
|
1155 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
|
1156 if exc_info: |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1157 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
|
1158 exc_info = sys.exc_info() |
|
36469
93efa59b3297
Added function name to LogRecord.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36468
diff
changeset
|
1159 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
|
1160 self.handle(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1161 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1162 def handle(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1163 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1164 Call the handlers for the specified record. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1165 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1166 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
|
1167 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
|
1168 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1169 if (not self.disabled) and self.filter(record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1170 self.callHandlers(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1171 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1172 def addHandler(self, hdlr): |
|
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 Add the specified handler to this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1175 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1176 if not (hdlr in self.handlers): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1177 self.handlers.append(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 def removeHandler(self, hdlr): |
|
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 Remove the specified handler from this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1182 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1183 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
|
1184 #hdlr.close() |
|
35582
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1185 hdlr.acquire() |
|
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1186 try: |
|
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1187 self.handlers.remove(hdlr) |
|
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1188 finally: |
|
52c65d73fb74
Added lock acquisition around handler removal from logger
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
35526
diff
changeset
|
1189 hdlr.release() |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1190 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1191 def callHandlers(self, record): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1192 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1193 Pass a record to all relevant handlers. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1194 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1195 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
|
1196 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
|
1197 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
|
1198 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
|
1199 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
|
1200 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1201 c = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1202 found = 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1203 while c: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1204 for hdlr in c.handlers: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1205 found = found + 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1206 if record.levelno >= hdlr.level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1207 hdlr.handle(record) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1208 if not c.propagate: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1209 c = None #break out |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1210 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1211 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
|
1212 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
|
1213 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
|
1214 " \"%s\"\n" % self.name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1215 self.manager.emittedNoHandlerWarning = 1 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1216 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1217 def getEffectiveLevel(self): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1218 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1219 Get the effective level for this logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1220 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1221 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
|
1222 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
|
1223 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1224 logger = self |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1225 while logger: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1226 if logger.level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1227 return logger.level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1228 logger = logger.parent |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1229 return NOTSET |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1230 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1231 def isEnabledFor(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1232 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1233 Is this logger enabled for level 'level'? |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1234 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1235 if self.manager.disable >= level: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1236 return 0 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1237 return level >= self.getEffectiveLevel() |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1238 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1239 class RootLogger(Logger): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1240 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1241 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
|
1242 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
|
1243 the hierarchy. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1244 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1245 def __init__(self, level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1246 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1247 Initialize the logger with the name "root". |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1248 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1249 Logger.__init__(self, "root", level) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1250 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1251 _loggerClass = Logger |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1252 |
|
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
|
1253 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
|
1254 """ |
|
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
|
1255 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
|
1256 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
|
1257 """ |
|
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 |
|
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 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
|
1260 """ |
|
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 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
|
1262 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
|
1263 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
|
1264 |
|
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 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
|
1266 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
|
1267 |
|
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 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
|
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 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
|
1271 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
|
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 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
|
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 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
|
1276 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
|
1277 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
|
1278 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
|
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 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
|
1281 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
|
1282 """ |
|
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 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
|
1284 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
|
1285 |
|
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 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
|
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 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
|
1289 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
|
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 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
|
1292 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
|
1293 |
|
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 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
|
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 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
|
1297 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
|
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 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
|
1300 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
|
1301 |
|
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 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
|
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 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
|
1305 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
|
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 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
|
1308 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
|
1309 |
|
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 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
|
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 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
|
1313 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
|
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 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
|
1316 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
|
1317 |
|
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 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
|
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 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
|
1321 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
|
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 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
|
1324 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
|
1325 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
|
1326 |
|
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 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
|
1328 """ |
|
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 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
|
1330 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
|
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 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
|
1333 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
|
1334 |
|
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 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
|
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 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
|
1338 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
|
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 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
|
1341 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
|
1342 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1343 root = RootLogger(WARNING) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1344 Logger.root = root |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1345 Logger.manager = Manager(Logger.root) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1346 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1347 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1348 # Configuration classes and functions |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1349 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1350 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1351 BASIC_FORMAT = "%(levelname)s:%(name)s:%(message)s" |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1352 |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1353 def basicConfig(**kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1354 """ |
|
32479
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1355 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
|
1356 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1357 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
|
1358 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
|
1359 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
|
1360 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1361 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
|
1362 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
|
1363 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
|
1364 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1365 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
|
1366 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
|
1367 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1368 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
|
1369 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
|
1370 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
|
1371 (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
|
1372 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
|
1373 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
|
1374 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
|
1375 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
|
1376 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
|
1377 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
|
1378 |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1379 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
|
1380 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
|
1381 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
|
1382 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
|
1383 when the handler is closed. |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1384 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1385 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
|
1386 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
|
1387 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
|
1388 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
|
1389 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
|
1390 else: |
|
fe80f772bfa1
Changed basicConfig() to add keyword arguments. Changes are backward-compatible.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
31597
diff
changeset
|
1391 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
|
1392 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
|
1393 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
|
1394 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
|
1395 fmt = Formatter(fs, dfs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1396 hdlr.setFormatter(fmt) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1397 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
|
1398 level = kwargs.get("level") |
|
43442
856f8ea922df
Change to basicConfig() to fix #1021.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
43441
diff
changeset
|
1399 if level is not None: |
|
32528
67539cfcf09f
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
32479
diff
changeset
|
1400 root.setLevel(level) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1401 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1402 #--------------------------------------------------------------------------- |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1403 # Utility functions at module level. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1404 # Basically delegate everything to the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1405 #--------------------------------------------------------------------------- |
|
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 def getLogger(name=None): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1408 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1409 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
|
1410 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1411 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
|
1412 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1413 if name: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1414 return Logger.manager.getLogger(name) |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1415 else: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1416 return root |
|
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 #def getRootLogger(): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1419 # """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1420 # Return the root logger. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1421 # |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1422 # 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
|
1423 # deprecated and may disappear in the future. |
|
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 root |
|
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 def critical(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1428 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1429 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
|
1430 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1431 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1432 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
|
1433 root.critical(*((msg,)+args), **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1434 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1435 fatal = critical |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1436 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1437 def error(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1438 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1439 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
|
1440 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1441 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1442 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
|
1443 root.error(*((msg,)+args), **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1444 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1445 def exception(msg, *args): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1446 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1447 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
|
1448 with exception information. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1449 """ |
|
48153
c77ac8bdd3fe
Remove dict.has_key() and apply() usage from the logging package to silence
Brett Cannon <bcannon@gmail.com>
parents:
47745
diff
changeset
|
1450 error(*((msg,)+args), **{'exc_info': 1}) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1451 |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1452 def warning(msg, *args, **kwargs): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1453 """ |
|
27932
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1454 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
|
1455 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1456 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1457 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
|
1458 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
|
1459 |
|
ac683ac6759a
SF patch #687683, Patches to logging (updates from Vinay)
Neal Norwitz <nnorwitz@gmail.com>
parents:
27349
diff
changeset
|
1460 warn = warning |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1461 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1462 def info(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1463 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1464 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
|
1465 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1466 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1467 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
|
1468 root.info(*((msg,)+args), **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1469 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1470 def debug(msg, *args, **kwargs): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1471 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1472 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
|
1473 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1474 if len(root.handlers) == 0: |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1475 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
|
1476 root.debug(*((msg,)+args), **kwargs) |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1477 |
|
33556
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1478 def log(level, msg, *args, **kwargs): |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1479 """ |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1480 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
|
1481 """ |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1482 if len(root.handlers) == 0: |
|
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1483 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
|
1484 root.log(*((level, msg)+args), **kwargs) |
|
33556
fd934778f4b4
Added log() function
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
33535
diff
changeset
|
1485 |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1486 def disable(level): |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1487 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1488 Disable all logging calls less severe than 'level'. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1489 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1490 root.manager.disable = level |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1491 |
|
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
|
1492 def shutdown(handlerList=_handlerList): |
|
26183
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1493 """ |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1494 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
|
1495 buffers). |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1496 |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1497 Should be called at application exit. |
|
f72b1f8684a2
Adding Vinay Sajip's logging package.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1498 """ |
|
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
|
1499 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
|
1500 #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
|
1501 #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
|
1502 try: |
|
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1503 h.flush() |
|
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1504 h.close() |
|
06a63c35df9e
Ignore exceptions which occur when closing files in shutdown()
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
32546
diff
changeset
|
1505 except: |
|
36468
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1506 if raiseExceptions: |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1507 raise |
|
3cf8a9ed446b
Propagate exceptions from shutdown() if raiseExceptions is not set.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
36456
diff
changeset
|
1508 #else, swallow |
|
31563
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1509 |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1510 #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
|
1511 try: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1512 import atexit |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1513 atexit.register(shutdown) |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1514 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
|
1515 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
|
1516 try: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1517 shutdown() |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1518 finally: |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1519 old_exit(status) |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1520 |
|
475bf4e7920e
Copyright year & version number/version date changes.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
29624
diff
changeset
|
1521 sys.exit = exithook |
|
49955
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1522 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1523 # Null handler |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1524 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1525 class NullHandler(Handler): |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1526 """ |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1527 This handler does nothing. It's intended to be used to avoid the |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1528 "No handlers could be found for logger XXX" one-off warning. This is |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1529 important for library code, which may contain code to log events. If a user |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1530 of the library does not configure logging, the one-off warning might be |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1531 produced; to avoid this, the library developer simply needs to instantiate |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1532 a NullHandler and add it to the top-level logger of the library module or |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1533 package. |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1534 """ |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1535 def emit(self, record): |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1536 pass |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1537 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1538 # Warnings integration |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1539 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1540 _warnings_showwarning = None |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1541 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1542 def _showwarning(message, category, filename, lineno, file=None, line=None): |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1543 """ |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1544 Implementation of showwarnings which redirects to logging, which will first |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1545 check to see if the file parameter is None. If a file is specified, it will |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1546 delegate to the original warnings implementation of showwarning. Otherwise, |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1547 it will call warnings.formatwarning and will log the resulting string to a |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1548 warnings logger named "py.warnings" with level logging.WARNING. |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1549 """ |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1550 if file is not None: |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1551 if _warnings_showwarning is not None: |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1552 _warnings_showwarning(message, category, filename, lineno, file, line) |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1553 else: |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1554 s = warnings.formatwarning(message, category, filename, lineno, line) |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1555 logger = getLogger("py.warnings") |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1556 if not logger.handlers: |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1557 logger.addHandler(NullHandler()) |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1558 logger.warning("%s", s) |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1559 |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1560 def captureWarnings(capture): |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1561 """ |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1562 If capture is true, redirect all warnings to the logging package. |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1563 If capture is False, ensure that warnings are not redirected to logging |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1564 but to their original destinations. |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1565 """ |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1566 global _warnings_showwarning |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1567 if capture: |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1568 if _warnings_showwarning is None: |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1569 _warnings_showwarning = warnings.showwarning |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1570 warnings.showwarning = _showwarning |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1571 else: |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1572 if _warnings_showwarning is not None: |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1573 warnings.showwarning = _warnings_showwarning |
|
878d40468c4e
Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
49009
diff
changeset
|
1574 _warnings_showwarning = None |
