Commit 4be335cd authored by Vinay Sajip's avatar Vinay Sajip

Added optional delay argument to FileHandler and subclasses.

parent a76d08b8
...@@ -41,8 +41,8 @@ except ImportError: ...@@ -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.4" __version__ = "0.5.0.5"
__date__ = "18 January 2008" __date__ = "24 January 2008"
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Miscellaneous module data # Miscellaneous module data
...@@ -763,7 +763,7 @@ class FileHandler(StreamHandler): ...@@ -763,7 +763,7 @@ class FileHandler(StreamHandler):
""" """
A handler class which writes formatted logging records to disk files. A handler class which writes formatted logging records to disk files.
""" """
def __init__(self, filename, mode='a', encoding=None): def __init__(self, filename, mode='a', encoding=None, delay=0):
""" """
Open the specified file and use it as the stream for logging. Open the specified file and use it as the stream for logging.
""" """
...@@ -774,8 +774,11 @@ class FileHandler(StreamHandler): ...@@ -774,8 +774,11 @@ class FileHandler(StreamHandler):
self.baseFilename = os.path.abspath(filename) self.baseFilename = os.path.abspath(filename)
self.mode = mode self.mode = mode
self.encoding = encoding self.encoding = encoding
stream = self._open() if delay:
StreamHandler.__init__(self, stream) self.stream = None
else:
stream = self._open()
StreamHandler.__init__(self, stream)
def close(self): def close(self):
""" """
...@@ -798,6 +801,18 @@ class FileHandler(StreamHandler): ...@@ -798,6 +801,18 @@ class FileHandler(StreamHandler):
stream = codecs.open(self.baseFilename, self.mode, self.encoding) stream = codecs.open(self.baseFilename, self.mode, self.encoding)
return stream return stream
def emit(self, record):
"""
Emit a record.
If the stream was not opened because 'delay' was specified in the
constructor, open it before calling the superclass's emit.
"""
if self.stream is None:
stream = self._open()
StreamHandler.__init__(self, stream)
StreamHandler.emit(self, record)
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Manager classes and functions # Manager classes and functions
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment