Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0f15181

Browse files
committed
Closes #14267: Merged fix from 3.2.
2 parents 4bd53b1 + 27f4897 commit 0f15181

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

Lib/logging/handlers.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -305,9 +305,10 @@ def computeRollover(self, currentTime):
305305
dstAtRollover = time.localtime(newRolloverAt)[-1]
306306
if dstNow != dstAtRollover:
307307
if not dstNow: # DST kicks in before next rollover, so we need to deduct an hour
308-
newRolloverAt = newRolloverAt - 3600
308+
addend = -3600
309309
else: # DST bows out before next rollover, so we need to add an hour
310-
newRolloverAt = newRolloverAt + 3600
310+
addend = 3600
311+
newRolloverAt += addend
311312
result = newRolloverAt
312313
return result
313314

@@ -358,11 +359,20 @@ def doRollover(self):
358359
self.stream.close()
359360
self.stream = None
360361
# get the time that this sequence started at and make it a TimeTuple
362+
currentTime = int(time.time())
363+
dstNow = time.localtime(currentTime)[-1]
361364
t = self.rolloverAt - self.interval
362365
if self.utc:
363366
timeTuple = time.gmtime(t)
364367
else:
365368
timeTuple = time.localtime(t)
369+
dstThen = timeTuple[-1]
370+
if dstNow != dstThen:
371+
if dstNow:
372+
addend = 3600
373+
else:
374+
addend = -3600
375+
timeTuple = time.localtime(t + addend)
366376
dfn = self.rotation_filename(self.baseFilename + "." +
367377
time.strftime(self.suffix, timeTuple))
368378
if os.path.exists(dfn):
@@ -373,19 +383,18 @@ def doRollover(self):
373383
os.remove(s)
374384
self.mode = 'w'
375385
self.stream = self._open()
376-
currentTime = int(time.time())
377386
newRolloverAt = self.computeRollover(currentTime)
378387
while newRolloverAt <= currentTime:
379388
newRolloverAt = newRolloverAt + self.interval
380389
#If DST changes and midnight or weekly rollover, adjust for this.
381390
if (self.when == 'MIDNIGHT' or self.when.startswith('W')) and not self.utc:
382-
dstNow = time.localtime(currentTime)[-1]
383391
dstAtRollover = time.localtime(newRolloverAt)[-1]
384392
if dstNow != dstAtRollover:
385393
if not dstNow: # DST kicks in before next rollover, so we need to deduct an hour
386-
newRolloverAt = newRolloverAt - 3600
394+
addend = -3600
387395
else: # DST bows out before next rollover, so we need to add an hour
388-
newRolloverAt = newRolloverAt + 3600
396+
addend = 3600
397+
newRolloverAt += addend
389398
self.rolloverAt = newRolloverAt
390399

391400
class WatchedFileHandler(logging.FileHandler):

0 commit comments

Comments
 (0)