[Python-checkins] cpython (3.2): Closes #14267: Corrected computation of rollover filename.

vinay.sajip python-checkins at python.org
Tue Mar 13 13:19:42 CET 2012


http://hg.python.org/cpython/rev/a1d9466441ff
changeset: 75585:a1d9466441ff
branch: 3.2
parent: 75580:0b3e5503a6ee
user: Vinay Sajip <vinay_sajip at yahoo.co.uk>
date: Tue Mar 13 12:10:33 2012 +0000
summary:
 Closes #14267: Corrected computation of rollover filename.
files:
 Lib/logging/handlers.py | 21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -270,9 +270,10 @@
 dstAtRollover = time.localtime(newRolloverAt)[-1]
 if dstNow != dstAtRollover:
 if not dstNow: # DST kicks in before next rollover, so we need to deduct an hour
- newRolloverAt = newRolloverAt - 3600
+ addend = -3600
 else: # DST bows out before next rollover, so we need to add an hour
- newRolloverAt = newRolloverAt + 3600
+ addend = 3600
+ newRolloverAt += addend
 result = newRolloverAt
 return result
 
@@ -323,11 +324,20 @@
 self.stream.close()
 self.stream = None
 # get the time that this sequence started at and make it a TimeTuple
+ currentTime = int(time.time())
+ dstNow = time.localtime(currentTime)[-1]
 t = self.rolloverAt - self.interval
 if self.utc:
 timeTuple = time.gmtime(t)
 else:
 timeTuple = time.localtime(t)
+ dstThen = timeTuple[-1]
+ if dstNow != dstThen:
+ if dstNow:
+ addend = 3600
+ else:
+ addend = -3600
+ timeTuple = time.localtime(t + addend)
 dfn = self.baseFilename + "." + time.strftime(self.suffix, timeTuple)
 if os.path.exists(dfn):
 os.remove(dfn)
@@ -337,19 +347,18 @@
 os.remove(s)
 self.mode = 'w'
 self.stream = self._open()
- currentTime = int(time.time())
 newRolloverAt = self.computeRollover(currentTime)
 while newRolloverAt <= currentTime:
 newRolloverAt = newRolloverAt + self.interval
 #If DST changes and midnight or weekly rollover, adjust for this.
 if (self.when == 'MIDNIGHT' or self.when.startswith('W')) and not self.utc:
- dstNow = time.localtime(currentTime)[-1]
 dstAtRollover = time.localtime(newRolloverAt)[-1]
 if dstNow != dstAtRollover:
 if not dstNow: # DST kicks in before next rollover, so we need to deduct an hour
- newRolloverAt = newRolloverAt - 3600
+ addend = -3600
 else: # DST bows out before next rollover, so we need to add an hour
- newRolloverAt = newRolloverAt + 3600
+ addend = 3600
+ newRolloverAt += addend
 self.rolloverAt = newRolloverAt
 
 class WatchedFileHandler(logging.FileHandler):
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /