Bug #1627575: Added _open() method to FileHandler which can be used to reopen files. The FileHandler instance now saves the encoding (which can be None) in an attribute called "encoding".

This commit is contained in:
Vinay Sajip 2007-01-09 14:50:28 +00:00
parent c9137263d5
commit 825b75a053
1 changed files with 14 additions and 9 deletions

View File

@ -41,8 +41,8 @@ except ImportError:
__author__ = "Vinay Sajip <vinay_sajip@red-dove.com>" __author__ = "Vinay Sajip <vinay_sajip@red-dove.com>"
__status__ = "production" __status__ = "production"
__version__ = "0.5.0.0" __version__ = "0.5.0.1"
__date__ = "08 January 2007" __date__ = "09 January 2007"
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Miscellaneous module data # Miscellaneous module data
@ -764,17 +764,15 @@ class FileHandler(StreamHandler):
""" """
Open the specified file and use it as the stream for logging. Open the specified file and use it as the stream for logging.
""" """
if codecs is None:
encoding = None
if encoding is None:
stream = open(filename, mode)
else:
stream = codecs.open(filename, mode, encoding)
StreamHandler.__init__(self, stream)
#keep the absolute path, otherwise derived classes which use this #keep the absolute path, otherwise derived classes which use this
#may come a cropper when the current directory changes #may come a cropper when the current directory changes
if codecs is None:
encoding = None
self.baseFilename = os.path.abspath(filename) self.baseFilename = os.path.abspath(filename)
self.mode = mode self.mode = mode
self.encoding = encoding
stream = self._open()
StreamHandler.__init__(self, stream)
def close(self): def close(self):
""" """
@ -784,6 +782,13 @@ class FileHandler(StreamHandler):
self.stream.close() self.stream.close()
StreamHandler.close(self) StreamHandler.close(self)
def _open(self):
if self.encoding is None:
stream = open(self.baseFilename, self.mode)
else:
stream = codecs.open(self.baseFilename, self.mode, self.encoding)
return stream
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Manager classes and functions # Manager classes and functions
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------