Mercurial > cpython-lru_cache-weakref
annotate Lib/distutils/log.py @ 79691:05c8928362ee
Merge __next__ method link fixes with 3.3.
| author | Ezio Melotti <ezio.melotti@gmail.com> |
|---|---|
| date | Fri, 12 Oct 2012 13:46:37 +0300 |
| parents | 0cafc20e5637 |
| children |
| rev | line source |
|---|---|
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
1 """A simple log mechanism styled after PEP 282.""" |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
2 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
3 # The class here is styled after PEP 282 so that it could later be |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
4 # replaced with a standard Python logging implementation. |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
5 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
6 DEBUG = 1 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
7 INFO = 2 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
8 WARN = 3 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
9 ERROR = 4 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
10 FATAL = 5 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
11 |
|
26014
d424558d24f9
[Bug #620630] Flush stdout after logging every message. Without it,
Andrew M. Kuchling <amk@amk.ca>
parents:
23667
diff
changeset
|
12 import sys |
|
d424558d24f9
[Bug #620630] Flush stdout after logging every message. Without it,
Andrew M. Kuchling <amk@amk.ca>
parents:
23667
diff
changeset
|
13 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
14 class Log: |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
15 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
16 def __init__(self, threshold=WARN): |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
17 self.threshold = threshold |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
18 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
19 def _log(self, level, msg, args): |
|
56164
3a3e145d552c
Merged revisions 74999 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52892
diff
changeset
|
20 if level not in (DEBUG, INFO, WARN, ERROR, FATAL): |
|
3a3e145d552c
Merged revisions 74999 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52892
diff
changeset
|
21 raise ValueError('%s wrong log level' % str(level)) |
|
3a3e145d552c
Merged revisions 74999 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52892
diff
changeset
|
22 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
23 if level >= self.threshold: |
|
52892
792bb885029f
Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
43026
diff
changeset
|
24 if args: |
|
792bb885029f
Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
43026
diff
changeset
|
25 msg = msg % args |
|
792bb885029f
Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
43026
diff
changeset
|
26 if level in (WARN, ERROR, FATAL): |
|
792bb885029f
Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
43026
diff
changeset
|
27 stream = sys.stderr |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
33965
diff
changeset
|
28 else: |
|
52892
792bb885029f
Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
43026
diff
changeset
|
29 stream = sys.stdout |
|
61752
0cafc20e5637
Issue #8663: distutils.log emulates backslashreplace error handler. Fix
Victor Stinner <victor.stinner@haypocalc.com>
parents:
56164
diff
changeset
|
30 if stream.errors == 'strict': |
|
0cafc20e5637
Issue #8663: distutils.log emulates backslashreplace error handler. Fix
Victor Stinner <victor.stinner@haypocalc.com>
parents:
56164
diff
changeset
|
31 # emulate backslashreplace error handler |
|
0cafc20e5637
Issue #8663: distutils.log emulates backslashreplace error handler. Fix
Victor Stinner <victor.stinner@haypocalc.com>
parents:
56164
diff
changeset
|
32 encoding = stream.encoding |
|
0cafc20e5637
Issue #8663: distutils.log emulates backslashreplace error handler. Fix
Victor Stinner <victor.stinner@haypocalc.com>
parents:
56164
diff
changeset
|
33 msg = msg.encode(encoding, "backslashreplace").decode(encoding) |
|
52892
792bb885029f
Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
43026
diff
changeset
|
34 stream.write('%s\n' % msg) |
|
792bb885029f
Merged revisions 70712,70714,70764-70765,70769-70771,70773,70776-70777,70788-70789,70824,70828,70832,70836,70842,70851,70855,70857,70866-70872,70883,70885,70893-70894,70896-70897,70903,70905-70907,70915,70927,70933,70951,70960,70962-70964,70998,71001,71006,71008,71010-71011,71019,71037,71056,71094,71101-71103,71106,71119,71123,71149-71150,71203,71212,71214-71217,71221,71240 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
43026
diff
changeset
|
35 stream.flush() |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
36 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
37 def log(self, level, msg, *args): |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
38 self._log(level, msg, args) |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
39 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
40 def debug(self, msg, *args): |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
41 self._log(DEBUG, msg, args) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
27987
diff
changeset
|
42 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
43 def info(self, msg, *args): |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
44 self._log(INFO, msg, args) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
27987
diff
changeset
|
45 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
46 def warn(self, msg, *args): |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
47 self._log(WARN, msg, args) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
27987
diff
changeset
|
48 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
49 def error(self, msg, *args): |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
50 self._log(ERROR, msg, args) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
27987
diff
changeset
|
51 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
52 def fatal(self, msg, *args): |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
53 self._log(FATAL, msg, args) |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
54 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
55 _global_log = Log() |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
56 log = _global_log.log |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
57 debug = _global_log.debug |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
58 info = _global_log.info |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
59 warn = _global_log.warn |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
60 error = _global_log.error |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
61 fatal = _global_log.fatal |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
62 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
63 def set_threshold(level): |
|
32943
9fb5138f58dd
make sure distutils logging is shut off in tests to avoid spurious output
Fred Drake <fdrake@acm.org>
parents:
32736
diff
changeset
|
64 # return the old threshold for use from tests |
|
9fb5138f58dd
make sure distutils logging is shut off in tests to avoid spurious output
Fred Drake <fdrake@acm.org>
parents:
32736
diff
changeset
|
65 old = _global_log.threshold |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
66 _global_log.threshold = level |
|
32943
9fb5138f58dd
make sure distutils logging is shut off in tests to avoid spurious output
Fred Drake <fdrake@acm.org>
parents:
32736
diff
changeset
|
67 return old |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
68 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
69 def set_verbosity(v): |
|
27987
2c751936f697
set_verbosity(): do something reasonable for out-of-range verbosity
Guido van Rossum <guido@python.org>
parents:
26285
diff
changeset
|
70 if v <= 0: |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
71 set_threshold(WARN) |
|
27987
2c751936f697
set_verbosity(): do something reasonable for out-of-range verbosity
Guido van Rossum <guido@python.org>
parents:
26285
diff
changeset
|
72 elif v == 1: |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
73 set_threshold(INFO) |
|
27987
2c751936f697
set_verbosity(): do something reasonable for out-of-range verbosity
Guido van Rossum <guido@python.org>
parents:
26285
diff
changeset
|
74 elif v >= 2: |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
75 set_threshold(DEBUG) |
