]> granicus.if.org Git - python/commitdiff
Added optional delay argument to FileHandler and subclasses.
authorVinay Sajip <vinay_sajip@yahoo.co.uk>
Thu, 24 Jan 2008 12:37:08 +0000 (12:37 +0000)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>
Thu, 24 Jan 2008 12:37:08 +0000 (12:37 +0000)
Lib/logging/__init__.py

index 2cb2bc906dba1da96532d0090a212aabc2491a70..157ce74a126ac380d94a9f3ba67acc2123e382fe 100644 (file)
@@ -41,8 +41,8 @@ except ImportError:
 
 __author__  = "Vinay Sajip <vinay_sajip@red-dove.com>"
 __status__  = "production"
-__version__ = "0.5.0.4"
-__date__    = "18 January 2008"
+__version__ = "0.5.0.5"
+__date__    = "24 January 2008"
 
 #---------------------------------------------------------------------------
 #   Miscellaneous module data
@@ -763,7 +763,7 @@ class FileHandler(StreamHandler):
     """
     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.
         """
@@ -774,8 +774,11 @@ class FileHandler(StreamHandler):
         self.baseFilename = os.path.abspath(filename)
         self.mode = mode
         self.encoding = encoding
-        stream = self._open()
-        StreamHandler.__init__(self, stream)
+        if delay:
+            self.stream = None
+        else:
+            stream = self._open()
+            StreamHandler.__init__(self, stream)
 
     def close(self):
         """
@@ -798,6 +801,18 @@ class FileHandler(StreamHandler):
             stream = codecs.open(self.baseFilename, self.mode, self.encoding)
         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
 #---------------------------------------------------------------------------