diff options
author | Benjamin Peterson <benjamin@python.org> | 2010-06-27 20:54:28 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2010-06-27 20:54:28 (GMT) |
commit | a82addb5f335dbca8727f0598ee4855c23a5f708 (patch) | |
tree | 732cc96c51d6e075633c13ea0aec358d9d8ea48d /Lib | |
parent | 28df4df079c8a5ca7173a170616548beead876c3 (diff) | |
download | cpython-a82addb5f335dbca8727f0598ee4855c23a5f708.zip cpython-a82addb5f335dbca8727f0598ee4855c23a5f708.tar.gz cpython-a82addb5f335dbca8727f0598ee4855c23a5f708.tar.bz2 |
Merged revisions 80712,81651 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r80712 | vinay.sajip | 2010-05-03 10:11:53 -0500 (Mon, 03 May 2010) | 1 line
Issue #8576: logging updated to remove usage of find_unused_port().
........
r81651 | vinay.sajip | 2010-06-02 05:05:31 -0500 (Wed, 02 Jun 2010) | 1 line
Logging: improved error reporting for BaseConfigurator.resolve().
........
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/logging/config.py | 26 | ||||
-rw-r--r-- | Lib/test/test_logging.py | 2 |
2 files changed, 19 insertions, 9 deletions
diff --git a/Lib/logging/config.py b/Lib/logging/config.py index 1e5ff68..63193b1 100644 --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@ -386,15 +386,21 @@ class BaseConfigurator(object): """ name = s.split('.') used = name.pop(0) - found = self.importer(used) - for frag in name: - used += '.' + frag - try: - found = getattr(found, frag) - except AttributeError: - self.importer(used) - found = getattr(found, frag) - return found + try: + found = self.importer(used) + for frag in name: + used += '.' + frag + try: + found = getattr(found, frag) + except AttributeError: + self.importer(used) + found = getattr(found, frag) + return found + except ImportError: + e, tb = sys.exc_info()[1:] + v = ValueError('Cannot resolve %r: %s' % (s, e)) + v.__cause__, v.__traceback__ = e, tb + raise v def ext_convert(self, value): """Default converter for the ext:// protocol.""" @@ -873,6 +879,8 @@ def listen(port=DEFAULT_LOGGING_CONFIG_PORT): def run(self): server = self.rcvr(port=self.port, handler=self.hdlr, ready=self.ready) + if self.port == 0: + self.port = server.server_address[1] self.ready.set() global _listener logging._acquireLock() diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index c884d3e..d763459 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -1670,6 +1670,8 @@ class ConfigDictTest(BaseTest): t = logging.config.listen(port) t.start() t.ready.wait() + # Now get the port allocated + port = t.port t.ready.clear() try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |