Mercurial > cpython-lru_cache-weakref
annotate Lib/distutils/log.py @ 80661:94de77bd0b4b 2.7
Issue #16194: document imp.load_dynamic problems
when read several extension modules from the same binary object file.
| author | Andrew Svetlov <andrew.svetlov@gmail.com> |
|---|---|
| date | Thu, 29 Nov 2012 19:51:28 +0200 |
| parents | 7a7642ab11b3 |
| 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): |
|
56158
7a7642ab11b3
#6954: Fixed crash when using DISTUTILS_DEBUG flag in Distutils.
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52581
diff
changeset
|
20 if level not in (DEBUG, INFO, WARN, ERROR, FATAL): |
|
7a7642ab11b3
#6954: Fixed crash when using DISTUTILS_DEBUG flag in Distutils.
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52581
diff
changeset
|
21 raise ValueError('%s wrong log level' % str(level)) |
|
7a7642ab11b3
#6954: Fixed crash when using DISTUTILS_DEBUG flag in Distutils.
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
52581
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: |
|
52581
1d7a772b3b18
using log.warn for sys.stderr
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
51047
diff
changeset
|
24 if args: |
|
1d7a772b3b18
using log.warn for sys.stderr
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
51047
diff
changeset
|
25 msg = msg % args |
|
1d7a772b3b18
using log.warn for sys.stderr
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
51047
diff
changeset
|
26 if level in (WARN, ERROR, FATAL): |
|
1d7a772b3b18
using log.warn for sys.stderr
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
51047
diff
changeset
|
27 stream = sys.stderr |
|
37377
8d0579d2b662
Bug #1458017: make distutils.Log._log more forgiving when passing in
Georg Brandl <georg@python.org>
parents:
33965
diff
changeset
|
28 else: |
|
52581
1d7a772b3b18
using log.warn for sys.stderr
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
51047
diff
changeset
|
29 stream = sys.stdout |
|
1d7a772b3b18
using log.warn for sys.stderr
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
51047
diff
changeset
|
30 stream.write('%s\n' % msg) |
|
1d7a772b3b18
using log.warn for sys.stderr
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
51047
diff
changeset
|
31 stream.flush() |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
32 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
33 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
|
34 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
|
35 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
36 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
|
37 self._log(DEBUG, msg, args) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
27987
diff
changeset
|
38 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
39 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
|
40 self._log(INFO, msg, args) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
27987
diff
changeset
|
41 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
42 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
|
43 self._log(WARN, msg, args) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
27987
diff
changeset
|
44 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
45 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
|
46 self._log(ERROR, msg, args) |
|
32736
c3a096bfbd6b
Whitespace normalization, via reindent.py.
Tim Peters <tim.peters@gmail.com>
parents:
27987
diff
changeset
|
47 |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
48 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
|
49 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
|
50 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
51 _global_log = Log() |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
52 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
|
53 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
|
54 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
|
55 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
|
56 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
|
57 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
|
58 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
59 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
|
60 # 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
|
61 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
|
62 _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
|
63 return old |
|
23667
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
64 |
|
dc7d5c2d5845
A simple log mechanism styled after the proposed std library module
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
65 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
|
66 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
|
67 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
|
68 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
|
69 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
|
70 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
|
71 set_threshold(DEBUG) |
