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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)