From 6badbe9f76bc7412a4ec1d50689688acc9abe780 Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Tue, 20 Jan 2009 22:49:13 +0000 Subject: [PATCH] Issue 5013: Fixed bug in FileHandler when delay was set. --- Lib/logging/__init__.py | 14 +++++++------- Misc/NEWS | 13 ++++++++----- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 67765009d5a..5ba9732eb8d 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -21,7 +21,7 @@ comp.lang.python, and influenced by Apache's log4j system. Should work under Python versions >= 1.5.2, except that source line information is not available unless 'sys._getframe()' is. -Copyright (C) 2001-2008 Vinay Sajip. All Rights Reserved. +Copyright (C) 2001-2009 Vinay Sajip. All Rights Reserved. To use, simply 'import logging' and log away! """ @@ -47,7 +47,7 @@ except ImportError: __author__ = "Vinay Sajip " __status__ = "production" __version__ = "0.5.0.5" -__date__ = "24 January 2008" +__date__ = "20 January 2009" #--------------------------------------------------------------------------- # Miscellaneous module data @@ -730,7 +730,6 @@ class StreamHandler(Handler): if strm is None: strm = sys.stderr self.stream = strm - self.formatter = None def flush(self): """ @@ -785,10 +784,12 @@ class FileHandler(StreamHandler): self.mode = mode self.encoding = encoding if delay: + #We don't open the stream, but we still need to call the + #Handler constructor to set level, formatter, lock etc. + Handler.__init__(self) self.stream = None else: - stream = self._open() - StreamHandler.__init__(self, stream) + StreamHandler.__init__(self, self._open()) def close(self): """ @@ -820,8 +821,7 @@ class FileHandler(StreamHandler): constructor, open it before calling the superclass's emit. """ if self.stream is None: - stream = self._open() - StreamHandler.__init__(self, stream) + self.stream = self._open() StreamHandler.emit(self, record) #--------------------------------------------------------------------------- diff --git a/Misc/NEWS b/Misc/NEWS index ca72fcfadb9..30c3a0f7e30 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 2.6.2 Core and Builtins ----------------- +- Issue #5013: Fixed a bug in FileHandler which occurred when the delay + parameter was set. + - Issue #4935: The overflow checking code in the expandtabs() method common to str, bytes and bytearray could be optimized away by the compiler, letting the interpreter segfault instead of raising an error. @@ -59,7 +62,7 @@ Core and Builtins - Issue #4589: Fixed exception handling when the __exit__ function of a context manager returns a value that cannot be converted to a bool. -- Issue #4233: Changed semantic of ``_fileio.FileIO``'s ``close()`` +- Issue #4233: Changed semantic of ``_fileio.FileIO``'s ``close()`` method on file objects with closefd=False. The file descriptor is still kept open but the file object behaves like a closed file. The ``FileIO`` object also got a new readonly attribute ``closefd``. @@ -182,7 +185,7 @@ Library - Restore Python 2.3 compatibility for decimal.py. -- Issue #1702551: distutils sdist was not excluding VCS directories under +- Issue #1702551: distutils sdist was not excluding VCS directories under Windows. Inital solution by Guy Dalberto. - Issue #4812: add missing underscore prefix to some internal-use-only @@ -191,8 +194,8 @@ Library - Issue #4795: inspect.isgeneratorfunction() returns False instead of None when the function is not a generator. -- Issue #4702: Throwing a DistutilsPlatformError instead of IOError in case - no MSVC compiler is found under Windows. Original patch by Philip Jenvey. +- Issue #4702: Throwing a DistutilsPlatformError instead of IOError in case + no MSVC compiler is found under Windows. Original patch by Philip Jenvey. - Issue #4739: Add pydoc help topics for symbols, so that e.g. help('@') works as expected in the interactive environment. @@ -200,7 +203,7 @@ Library - Issue #4756: zipfile.is_zipfile() now supports file-like objects. Patch by Gabriel Genellina. -- Issue #4646: distutils was choking on empty options arg in the setup +- Issue #4646: distutils was choking on empty options arg in the setup function. Original patch by Thomas Heller. - Issue #4400: .pypirc default generated file was broken in distutils.