summaryrefslogtreecommitdiffstats
path: root/Lib/logging
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2012-03-13 12:10:33 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2012-03-13 12:10:33 (GMT)
commit27f48979cafa9b955fcb45eed273ccb72ba35201 (patch)
treec493a21513ef236238de4cb351670a904f4de4af /Lib/logging
parent1732ab4f152f8da04ab937facef8d57004d67939 (diff)
downloadcpython-27f48979cafa9b955fcb45eed273ccb72ba35201.zip
cpython-27f48979cafa9b955fcb45eed273ccb72ba35201.tar.gz
cpython-27f48979cafa9b955fcb45eed273ccb72ba35201.tar.bz2
Closes #14267: Corrected computation of rollover filename.
Diffstat (limited to 'Lib/logging')
-rw-r--r--Lib/logging/handlers.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index 708edc5..73ce031 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -270,9 +270,10 @@ class TimedRotatingFileHandler(BaseRotatingHandler):
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 @@ class TimedRotatingFileHandler(BaseRotatingHandler):
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 @@ class TimedRotatingFileHandler(BaseRotatingHandler):
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):