Commit d8e3219b authored by Vinay Sajip's avatar Vinay Sajip

Issue 5013: Fixed bug in FileHandler when delay was set - added fix for...

Issue 5013: Fixed bug in FileHandler when delay was set - added fix for RotatingFileHandler and changed header comment slightly.
parent 07ff5344
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
Logging package for Python. Based on PEP 282 and comments thereto in Logging package for Python. Based on PEP 282 and comments thereto in
comp.lang.python, and influenced by Apache's log4j system. comp.lang.python, and influenced by Apache's log4j system.
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! To use, simply 'import logging' and log away!
""" """
...@@ -43,8 +43,8 @@ except ImportError: ...@@ -43,8 +43,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.6" __version__ = "0.5.0.7"
__date__ = "03 December 2008" __date__ = "20 January 2009"
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Miscellaneous module data # Miscellaneous module data
...@@ -737,7 +737,6 @@ class StreamHandler(Handler): ...@@ -737,7 +737,6 @@ class StreamHandler(Handler):
if strm is None: if strm is None:
strm = sys.stderr strm = sys.stderr
self.stream = strm self.stream = strm
self.formatter = None
def flush(self): def flush(self):
""" """
...@@ -792,10 +791,12 @@ class FileHandler(StreamHandler): ...@@ -792,10 +791,12 @@ class FileHandler(StreamHandler):
self.mode = mode self.mode = mode
self.encoding = encoding self.encoding = encoding
if delay: 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 self.stream = None
else: else:
stream = self._open() StreamHandler.__init__(self, self._open())
StreamHandler.__init__(self, stream)
def close(self): def close(self):
""" """
...@@ -827,8 +828,7 @@ class FileHandler(StreamHandler): ...@@ -827,8 +828,7 @@ class FileHandler(StreamHandler):
constructor, open it before calling the superclass's emit. constructor, open it before calling the superclass's emit.
""" """
if self.stream is None: if self.stream is None:
stream = self._open() self.stream = self._open()
StreamHandler.__init__(self, stream)
StreamHandler.emit(self, record) StreamHandler.emit(self, record)
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
......
...@@ -19,9 +19,9 @@ Additional handlers for the logging package for Python. The core package is ...@@ -19,9 +19,9 @@ Additional handlers for the logging package for Python. The core package is
based on PEP 282 and comments thereto in comp.lang.python, and influenced by based on PEP 282 and comments thereto in comp.lang.python, and influenced by
Apache's log4j system. Apache's log4j system.
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! To use, simply 'import logging.handlers' and log away!
""" """
import logging, socket, os, pickle, struct, time, re import logging, socket, os, pickle, struct, time, re
...@@ -112,7 +112,7 @@ class RotatingFileHandler(BaseRotatingHandler): ...@@ -112,7 +112,7 @@ class RotatingFileHandler(BaseRotatingHandler):
""" """
Do a rollover, as described in __init__(). Do a rollover, as described in __init__().
""" """
if self.stream:
self.stream.close() self.stream.close()
if self.backupCount > 0: if self.backupCount > 0:
for i in range(self.backupCount - 1, 0, -1): for i in range(self.backupCount - 1, 0, -1):
...@@ -138,6 +138,8 @@ class RotatingFileHandler(BaseRotatingHandler): ...@@ -138,6 +138,8 @@ class RotatingFileHandler(BaseRotatingHandler):
Basically, see if the supplied record would cause the file to exceed Basically, see if the supplied record would cause the file to exceed
the size limit we have. the size limit we have.
""" """
if self.stream is None: # delay was set...
self.stream = self._open()
if self.maxBytes > 0: # are we rolling over? if self.maxBytes > 0: # are we rolling over?
msg = "%s\n" % self.format(record) msg = "%s\n" % self.format(record)
self.stream.seek(0, 2) #due to non-posix-compliant Windows feature self.stream.seek(0, 2) #due to non-posix-compliant Windows feature
...@@ -302,6 +304,7 @@ class TimedRotatingFileHandler(BaseRotatingHandler): ...@@ -302,6 +304,7 @@ class TimedRotatingFileHandler(BaseRotatingHandler):
then we have to get a list of matching filenames, sort them and remove then we have to get a list of matching filenames, sort them and remove
the one with the oldest suffix. the one with the oldest suffix.
""" """
if self.stream:
self.stream.close() self.stream.close()
# get the time that this sequence started at and make it a TimeTuple # get the time that this sequence started at and make it a TimeTuple
t = self.rolloverAt - self.interval t = self.rolloverAt - self.interval
......
...@@ -137,6 +137,9 @@ Core and Builtins ...@@ -137,6 +137,9 @@ Core and Builtins
Library Library
------- -------
- Issue #5013: Fixed a bug in FileHandler which occurred when the delay
parameter was set.
- Issue #4842: Always append a trailing 'L' when pickling longs using - Issue #4842: Always append a trailing 'L' when pickling longs using
pickle protocol 0. When reading, the 'L' is optional. pickle protocol 0. When reading, the 'L' is optional.
......
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